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.
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.- 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'
- 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.
- Clone down this repository:
git clone https://github.com/oslabs-beta/franz
- Create a
.env
file using the template in the.env.template
file to set the environment variables. - In the FranzView root directory to install all dependencies:
npm install
- Build your version of Franzview:
npm run build
- Start the server:
npm start
- FranzView defaults to running on port 3000. So simply go to https://localhost:3000, and voila! You can view your metrics and start managing your Kafka cluster!
- Chris Dunleavy | GitHub | Linkedin
- Ryan Hastie | GitHub | Linkedin
- Jonathan Haviv | GitHub | Linkedin
- Rachelle Maiorca | GitHub | Linkedin
- Patrick Reid | GitHub | Linkedin
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!
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:
- Create a
prometheus.yml
file from the templateprometheus.template.yml
- Save it in the
configs/prometheus
folder - Run the following command to spin up a Prometheus server running at https://localhost:9090:
docker-compose -f docker-compose-prom-only.yml up -d
- Create a
- If you just need want to spin up a Prometheus server + Kafka Cluster.:
- We already have a Prometheus config set up, so don't worry about it!
- Run the following command to spin up a Prometheus server running at https://localhost:9090 and 3 brokers (localhost:9092, localhost:9093, localhost:9094):
docker-compose -f docker-compose-kafka-prom.yml up -d
This product is licensed under the MIT License without restriction.