Skip to content

An open source kafka monitoring and management tool built with Javascript developers in mind!

License

Notifications You must be signed in to change notification settings

oslabs-beta/franzView

Repository files navigation

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.

About

An open source kafka monitoring and management tool built with Javascript developers in mind!

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published