Saamsa is an easy-to-use web & desktop application built to work with Kafka that:
- Displays consumer-level load on an individual broker
- Displays previous producer-level load on the topic level via topic-message-offsets
- Allows you as the developer to see what consumer is consuming what data, which groups they belong to, and if any sticky or stale consumers need to be remedied.
- Allows you to see how your data is stored on topics and if your data rate is causing batching issues, leading to an imbalance of messages on individual partitions
- Allows you as the developer to circumvent the black box nature of Kafka and really get the behind-the-scenes of your implementation of the Kafka system and assess if everything is behaving as expected
- Allows you to visualize load balancing on multiple Kafka brokers and to remedy any unbalanced loads on any topics.
- Allows for single replication with exactly-once written commits and continuous real-time load balancing on a single topic on the same broker. This ensures data integrity and efficient read/write operations for maximal performance.
- This functionality is achieved through a custom Kafka streams API implementation which gets attached to the provided topic.
- It replicates the data in real-time as an independent consumer and producer to the Kafka topic, ensuring no interference with native consumers and producers.
- Pre-requisites
- Features
- How it works
- Demo Testing App
- Installation
- Feature roadmap
- Contribute
- License
To use this application, you'll need to have :
- Either a locally hosted or publically-available cloud hosted Kafka instance
- If you have a locally hosted instance, please use the Desktop Application.
Saamsa has the following features:
- An intuitive GUI.
- Insights into brokers, consumers, topics, offsets, partition indices
- Graphs to visualize & monitor load balancing on a topic level
- Ability to rebalance message-offset load on a topic
Getting started with Saamsa is easy:
- Download the app for MacOS or visit the web application
- Sign up if you are a new user. Otherwise, log in.
- To add a new broker address, add the location in the input field and click Submit.
- To use an already submitted broker address, Click on the dropdown next to Select broker and choose the preferred broker.
- Select a topic from the dropdown.
- You can now see a graphical visualization of your Saamsa topic on the selected broker.
To customize load balancing:
- Select the broker and the topic who's load balancing you want to customize.
- Click on the "customize load balancing" button to customize load balancing for the selected topic.
- The display will automatically change to display this balanced topic after a second or two.
- You can now see load balancing customized on the selected topic.
We have created a demo testing app for you to understand how Saamsa works with an application that:
- Uses Kafka as its message broker
- Creates consumers that read data upon button click
- Created producers that produce massive amounts of data upon button click
To use our Demo app, all you have to do is:
- Navigate to demo.saamsa.io
- This is a publically available Kafka/Zookeeper instance with controls to produce data, consume data, and create topics.
- Clone this repo.
- Install Docker Desktop.
- From the cloned repo's directory, run
$ docker compose up -d
This opens up a local Kafka/Zookeepr instance at localhost:29092, localhost:2181. A GUI for easily producing data, consuming data, and creating topics for this broker is available at localhost:3000.
To use our Web Application/Desktop Application for MacOS, please follow steps 1 - 6 of Getting started with Saamsa, which can be found above.
The development team intends to continue improving Saamsa and adding more features. Head to our roadmap to see our upcoming planned features.
Adam Thibodeaux - LinkedIn
Shamilah Faria - LinkedIn
Janilya Baizack - LinkedIn
Kasthuri Menon - LinkedIn
If you'd like to support the active development of Saamsa:
- Add a GitHub Star to the project.
- Tweet about the project on your Twitter.
- Write a review or tutorial on Medium, Dev.to or personal blog.
- Contribute to this project by raising a new issue or making a PR to solve an issue.