Kurrent

Apache Kafka cluster metrics visualizer

Kurrent is an open-source project providing real-time Apache Kafka metrics data monitoring. Our tool is dedicated to providing developers an easy and intuitive means for monitoring the health and throughput of their Kafka cluster.

logo

Features

User profile: Sign up and login to your profile to store your Prometheus server connections for easy navigation between all your Kafka instances.

Real-Time Metrics: View your metrics in real-time with Kurrents intuitive dashboard charts to monitor the ongoing health of your cluster through testing or real-time use.

Prometheus Integration: Kurrent provides a sample Prometheus yaml to make it easy to setup your Kafka clusters for metrics monitoring

Tech Stack

JavaScript React Redux Node Express Prometheus PostgreSQL Apache Kafka Jest Testing Library Docker Chart.js


Getting Started

To install locally, fork and clone this Github repository.

  • Create a .env file in the main directory and create a variable DB_URI set equal to your PostgreSQL server instance URI
  • Instanciate the database tables with the following commands:
    • CREATE TABLE users ( user_id serial PRIMARY KEY, email VARCHAR(255) NOT NULL, username VARCHAR(255), password VARCHAR(255) NOT NULL, service_addresses text[])
    • CREATE TABLE sessions ( session_id serial PRIMARY KEY, user_id INT REFERENCES users(user_id), session_token VARCHAR(255) NOT NULL, login_time timestamp, session_status VARCHAR(20) DEFAULT 'active')
    • In the terminal run:
      • npm install
      • npm run dev
    • Once the application is running, navigate to localhost:8080, create an account, and connect your Prometheus server with its ip:port address

If you’re interested in the containerized version of Kurrent, it does exist!

  • In your terminal, type
    • docker pull kurrentio/kurrent:latest
  • An image of Kurrent will be installed onto your machine! From there, you can bypass the signup portion of the next section.
    • Keep in mind, your containerized image of Kurrent may not be able to access localhost. To alleviate this, when adding your ports on the client side of the Kurrent image you can use machine-ip-address:port, and replace the ip and port address to your prometheus configured endpoints.
    • Contributions to the Docker branch of Kurrent are also greatly welcomed.

If you just want to test out our tool and don’t have a running Kafka cluster, feel free to look at the provided Demo Kafka Broker directory and its readme for instructions on how to start up a local Kafka broker using Docker.

Using Kurrent

  1. Create a User Account: Before you can use Kurrent, you’ll first need to sign up a new account. You can do this using your email, an optional username, and a password.

Signup

  1. Connect Your Prometheus Server: Connecting your Prometheus server is as simple as clicking the “Add a Cluster” button, typing in you server address with the server ip address and prometheus exposed port number, and clicking the “Add” button. You should now see your address listed below. Simply click this address to see your metrics updating on the dashboard.

AddServer

  1. View Your Metrics: By default you will first see the overall health metrics of your cluster. By selecting the “Producer” or “Consumer” buttons, the dashboard will display metrics related to each, allowing you to see the impact of producers and consumers on your cluster health.

Connect

  1. Sign Out: When you are done monitoring your cluster for the day or want to signin to a new account, simply click the “Sign Out” button to return to the landing page.

Signout

Contribute

If you’d like to contribute to the project and improve its current functionality or add a feature, please fork the repository and submit a pull request. Some of our planned future features include:

  • Typescript migration
  • User defined alerts
  • User customizable dashboard. Choose what metrics to see over a chosen timeframe
  • Open Authorization
  • More testing coverage
  • Save and compare metrics from past runs or between different clusters

The Team

Garrett Byrne

Linkedin | GitHub

Jensen Schmidt

Linkedin | GitHub

Michael Newbold

Linkedin | GitHub

Swarna Muralidharan

Linkedin | GitHub

GitHub

View Github