Giter VIP home page Giter VIP logo

oslabs-beta / kafka-sonar Goto Github PK

View Code? Open in Web Editor NEW
44.0 4.0 5.0 64.2 MB

The one-stop shop Docker Desktop Extension for seamless Kafka cluster monitoring and troubleshooting ๐Ÿ‹ ๐Ÿš€

Home Page: https://kafkasonar.io/

License: MIT License

JavaScript 0.51% Dockerfile 1.96% Makefile 0.79% HTML 0.27% TypeScript 96.44% CSS 0.03%
developer-tools apache-kafka docker docker-extension kafka

kafka-sonar's Introduction

Kafka Sonar

The one-stop shop Docker Desktop Extension for seamless Kafka cluster monitoring and troubleshooting ๐Ÿ‹ ๐Ÿš€

Table of Contents

  1. About
  2. How it Works
  3. Getting Started
  4. Roadmap
  5. Contributors
  6. License

About

Kafka Sonar is the first-of-its-kind Docker Desktop Extension aimed at enhancing the Kafka developer experience. For developers monitoring or testing their Kafka clusters, Sonar offers an at-a-glance overview of cluster health with 20 essential metrics, and archives those metrics for postmortem retrieval and analysis. Sonar provides a transparent, no-code configuration solution to your Kafka cluster monitoring needs, all in Docker Desktop. It's as simple as entering your cluster information and clicking to connect.

How it Works

Kafka Sonar is built with:

  • Docker
  • TypeScript
  • React
  • MUI
  • React Router
  • Vite
  • Node.js
  • Express.js
  • Prometheus
  • Grafana
  • TimescaleDB

The cluster examples in the demo-clusters repo are built with the KafkaJS library.

Kafka Sonar consists of:

  • A frontend UI which allows you to add cluster connections and monitor those connections using visualizations generated by Grafana and supported by Prometheus;
  • A Node backend which handles API calls from the frontend UI, and a time-series database to store your cluster's metrics;
  • And two backend containerized services custom-configured to your cluster which are spun up or down via the Docker Engine depending on Sonar's connection state:
    • A Prometheus service to connect to your brokers' JMX-exposing ports and read metrics data, and
    • A Grafana service to display that metrics data as embedded graphs on the frontend UI.

When you connect, Sonar spins up Prometheus and Grafana containers configured to your cluster (on ports 9090 and 3000, respectively) and manages their entire lifecycle for you. You can also download historical metrics data for your cluster as a .csv for analysis.

Getting Started

Requirements

In order to use Kafka Sonar, you must have a containerized Kafka cluster set up to expose JMX data. Our recommendation to use Confluent's Kafka images with the KAFKA_OPTS environmental variable to run the Prometheus JMX Exporter as a Java agent. Your cluster must also be set up using a Docker bridge network to allow Sonar's custom Prometheus container to connect. See here for working examples.

Install

Install the extension from Docker Desktop, or build it yourself by forking this repo, navigating to the root folder and running

make build-extension

and then

make install-extension

Make sure Docker Desktop is running to build it yourself.

Click to Connect

Once installed, navigate to the extension, create an account, and click Add A Connection. Enter your cluster's information to allow Sonar to connect and begin rendering metrics. It's that simple. Your cluster's configurations for Prometheus and Grafana are stored in a volume to facilitate rapid reconnection.


Enter your cluster's information



Click to connect and view metrics



Download historic metrics


๐Ÿ”’ Your cluster's credentials and metrics are stored exclusively in a containerized database right on your own machine, giving you complete control over your data. Kafka Sonar does not externally transmit any of your sensitive data.

Roadmap

Some features the team is looking to implement in the future include:

  • Rendering cluster metrics via a charting library rather than Grafana
  • Include another UI to allow users to configure alerts when metrics rise above or drop below user-configured thresholds
  • Utilize KafkaJS to add another tab in Current Run Metrics with a console view streaming real-time cluster errors
  • Refactor FE to a more elegant state management solution (i.e. Redux, Recoil)
  • Add E2E testing with Jest-puppeteer
  • Implement CI workflow with GitHub Actions
  • Add a PassportJS Google OAuth 2.0 login feature
  • Grow the metrics dashboards with additional useful cluster metrics:
    • Messages in per broker
    • Bytes in per broker
    • Bytes out per broker
    • Messages in per topic
    • Bytes in per topic
    • Bytes out per topic
    • Avg Replication Factor
    • In-sync Replicas
    • Out-of-sync Replicas
    • Failed producer request rate OR failed req to server / sec
    • Broker response rate OR res to consumers / sec
    • Failed fetch request rate OR req to broker / sec
    • Requests in-flight (awaiting responses)
    • Time spend in Garbage Collection

Contributors

Contributing

We urge Kafka developers to utilize Sonar in their workflow and provide product feedback via Git issues. We encourage potential contributors to start with the our Roadmap above. Thank you in advance for your support!

License

This product is licensed under the MIT License without restriction.

kafka-sonar's People

Contributors

kareemhs avatar mjsway avatar stekim4 avatar unatarajan 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

Watchers

 avatar  avatar  avatar  avatar

kafka-sonar's Issues

Issue with install from Docker Desktop on W10

Hello,

I just tried to install the extension from Docker Desktop on Windows 10 and got the following error:

Extension was not installed. Reason: installation could not be completed due to: executing 'C:\Program Files\Docker\Docker\resources\bin\docker --context desktop-linux cp 852c44032f049272693751e8e40df58342556db00d8bd48fccb724154bdddfc3://ui C:\Users\asdf\AppData\Roaming\Docker\extensions\tmp\4283747688-ext-install\kafkasonar_kafkasonar\ui' : exit status 1: symlink ..\acorn\bin\acorn C:\Users\asdf\AppData\Roaming\Docker\extensions\tmp\4283747688-ext-install\kafkasonar_kafkasonar\ui\ui\node_modules.bin\acorn: A required privilege is not held by the client.

Thanks

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.