Code Monkey home page Code Monkey logo

franzview's Introduction

Logo

FranzView

An open-source Kafka monitoring and management tool built with JavaScript developers in mind!

GitHub stars GitHub issues GitHub last commit

franzview.com

Table of Contents

  1. About the Project
  2. Getting Started
  3. Contributors
  4. Roadmap
  5. Prometheus Server and Demo Cluster
  6. License

About the Project

FranzView is an open-source web application to help small teams with monitoring and management of Apache Kafka clusters. With FranzView you can monitor key metrics related to broker and topic performance and take actions around them. Through the UI you are able to:

  • Monitor key performance metrics in real time by broker or topic and diagnose any issues through different views
  • Create and delete topics within a cluster
  • Reassign partition replicas to support with load balancing, change replication factor for a topic, and solve for underreplication issues

These features are supported by a GraphQL API for improved performance, for abstraction of PromQL queries, and is easily extendable based on the nuances of your cluster.

Built With

Getting Started

Requirements

Before starting setup you'll need to take the following steps:

  • Have node installed. FranzView is tested to work on Node 14+.
  • If you'd like to use our demo cluster, make sure you have Docker Desktop and Docker Compose installed and then check the demo instructions.
  • Set up JMX exporter on your cluster. You can find the configuration files and a copy of the JMX exporter jar file in the configs/jmx_exporter folder in this repo.
    1. If you're starting your Kafka cluster from the CLI you can set up JMX exporter following these commands:
    export KAFKA_OPTS='-javaagent:{PATH_TO_JMX_EXPORTER}/jmx-exporter.jar={PORT}:{PATH_TO_JMX_EXPORTER_KAFKA.yml}/kafka.yml'
    
    1. Launch or restart your broker as you normally would.
  • Have a Prometheus metric server set up with targets setup for each of your brokers. You should use the prometheus.template.yml as a template.

Please check the docker-compose files in this repo as examples or to spin up a demo cluster.

Installation

  1. Clone down this repository:
git clone https://github.com/oslabs-beta/franz
  1. Create a .env file using the template in the .env.template file to set the environment variables.
  2. In the FranzView root directory to install all dependencies:
npm install
  1. Build your version of Franzview:
npm run build

When you're ready to use FranzView

  1. Start the server:
npm start
  1. FranzView defaults to running on port 3000. So simply go to http://localhost:3000, and voila! You can view your metrics and start managing your Kafka cluster!

Contributors

Roadmap

Franzview is in early stages, but we wanted to get it in the hands of developers as soon as possible to be able to start incorporating user feedback immediately. Here are features we're working on bringing to FranzView in the near future:

  • Additional filtering options for topics and to filter data by time
  • The option to auto-deploy a Prometheus server if one isn't passed in
  • Additional authentication support for Kafka Clusters
  • Log exploration to support with troubleshooting
  • Consumer metrics to monitor consumer performance and make improvements
  • Frontend querying tools so you can query data that is important to your team

If you don't see a feature that you're looking for listed above, find any bugs, or have any other suggestions, please feel free to open an issue and our team will work with you to get it implemented!

Also if you create a custom implementation of FranzView we'd love to see how you're using it!

Prometheus Server and Demo Cluster

We have a few different docker-compose files depending on your needs.

  • If you just need a Kafka cluster (this will spin up a cluster with one zookeeper instance and three brokers (localhost:9092, localhost:9093, localhost:9094):
    docker-compose -f docker-compose-kafka-only.yml up -d
    
  • If you just need a Prometheus server:
    1. Create a prometheus.yml file from the template prometheus.template.yml
    2. Save it in the configs/prometheus folder
    3. Run the following command to spin up a Prometheus server running at http://localhost:9090:
    docker-compose -f docker-compose-prom-only.yml up -d
    
  • If you just need want to spin up a Prometheus server + Kafka Cluster.:
    1. We already have a Prometheus config set up, so don't worry about it!
    2. Run the following command to spin up a Prometheus server running at http://localhost:9090 and 3 brokers (localhost:9092, localhost:9093, localhost:9094):
    docker-compose -f docker-compose-kafka-prom.yml up -d
    

License

This product is licensed under the MIT License without restriction.

franzview's People

Contributors

christopherdunleavy avatar flyingwolf1701 avatar jonathanhaviv avatar rbhastie avatar rmaiorca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

franzview's Issues

Error: reason: self signed certificate in certificate chain

Describe the bug
When running Franz from my local system against Prometheus deployed in my company's K8S cluster using, apparently, self signed certificate, I get the following error for a large number of similar queries on launching the Franz portal on http://localhost:3000

Error: FetchError: request to https://prometheus.myCompany.com/api/v1/query?query=(sum(kafka_cluster_partition_insyncreplicascount%7Btopic=~%22__consumer_offsets%22%7D)by(topic)) failed, reason: self signed certificate in certificate chain

To Reproduce
Steps to reproduce the behavior:

  1. Install Kafka in K8S cluster and expose it via Nodeport for use.
  2. Validate that the Kafka brokers can be reached from my dev desktop using a test application.
  3. Install Prometheus in K8S cluster and expose it via both Nodeport and Ingress.
  4. Validate that both URLs http:Nodeport, and https://ingress and successfully display the Prometheus portal from my dev desktop.
  5. Set .env to use either of the two URLs to the Prometheus instance, save the changes and run "npm start".
  6. When console indicates that the console is available on port 3000, open the portal.

Expected behavior
The portal to draw properly and be able to retrieve data with no errors in the console.

Actual behavior*
All attempts to query the Prometheus service fail with the self signed cert issue.

Thing's I've attempted to resolve the issue:

  1. Import the cert in my system cert store as a Trusted Root Cert Authority
  2. Set strict SSL to false
  3. Set NPM config to point to the cert directly

Source of the attempts:
https://stackoverflow.com/questions/13913941/how-to-fix-ssl-certificate-error-when-running-npm-on-windows/30341389#30341389

None of these things have worked, so I need help/guidance.

Desktop (please complete the following information):

  • OS: Windows 11
  • Browser Edge and Chrome
  • Version Latest on both.

Additional context
What I'm looking for is a way to make this work so I can evaluate it for use within my team to monitor and manage our Kafka clusters, so any help would be greatly appreciated.

After intital set up in Docker and running, 'http://localhost:3000/topics' Shows blank page in Edge and Chrome

Describe the bug
Following the instructions on the Readme.MD page, and changing the ENV hosts to "localhost", starting the service and opening the portal works on the default landing page, and then clicking down the left navigation panel icons, everything except "topics" (folder Icon) resolves properly, but the "topics" URL results in a blank page.

To Reproduce
Steps to reproduce the behavior:

  1. Run the 'docker-compose -f docker-compose-kafka-prom.yml up -d'
  2. Make sure Node.js is installed: v16.13.0
  3. Follow the install, and build command sequence.
  4. Modify the host name in the .env file to be "localhost".
  5. execute "npm start" and wait for the "Kafka Admin Connected" message in the console
  6. Launch the portal "http://localhost:3000".
  7. Click each of the icons in the left navigation pane.

Expected behavior
Each icon's target will resolve properly in a useful portal page.

Actual behavior
The Topics icon link results in a blank page in both Edge and Chrome browsers. Note, I did not test in other browsers.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 11

  • Browser: Edge

  • Version: 104.0.1293.70 (Official build) (64-bit)
    image
    Edit Note: Uploaded the right screenshot, sorry!

  • Browser 2: Chrome

  • Version: 104.0.5112.102 (Official Build) (64-bit)
    image

Additional context
After the above, I added a topic, and the Topic page did resolve, so perhaps, if there are no topics are found, you should either:

  1. Put up a message stating no topics found, please create at least one.
  2. Redirect to the "Create a Topic" page automatically.
    Edit Note: Added the additional context once I figured that part out.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.