Full Configuration Environment for Apache kafka Metrics and Monitoring.
Cluster and brokers configuration in Apache kafka with Metric Visualization using JMX Exporter Agent, Connection and monitoring of Prometheus, Grafana, Conduktor, kafka Connect, kafka-schema-registry, ksqlDB,kafka REST Proxy, PostgreSql, and PgAdmin 4 in Docker Containers.
Make sure you have the latest versions of Docker and Docker Compose installed on your machine.
Clone this repository or copy the files from this repository into a new folder. In the docker-compose.yml file, you can change the ports (in case you're running multiple containers on your system).
With this project, you can quickly run the following:
- Apache Kafka
- Prometheus
- Grafana
- kafka connect
- kafka-schema-registry
- ksqldb
- kafka-rest-proxy
- Conduktor
- Postgresql
- PgAdmin
Contents:
Edit the .env file to change the default environment variables.
Open a terminal and run cd to the folder where you can see the files docker-compose-single-full-stack.yml, which contains the necessary configuration to deploy a Kafka broker, and the file docker-compose-multiple-full-stack.yml, which contains the configuration for multiple Apache Kafka brokers.
Execute as needed:
docker-compose -f docker-compose-single-full-stack.yml up -d
This will start the containers and create volumes according to the configuration in your docker-compose.yml files. Make sure to grant write permissions to the directory so it can create the necessary volumes for the containers. Similarly, remember to clean the volumes folder when running different files to avoid data inconsistency.
.env– File containing the environment variable data.volumenes– Folder containing container data.config– Folder containing the configuration files necessary for the operation of the containers.
The containers are already built and running. You should be able to access the installation of each container.
You can visit http:/localhost:8083 to check the status of kafka-connect, or go to http:/localhost:8088 to view the status of ksqldb-server, as well as the other services such as kafka-rest-proxy and kafka-schema-registry.


You can visit http:/localhost:9090 to access Prometheus after starting the containers, and you will see a screen like the following, where you will have the option to add panels based on your custom query.

In the Status menu, you can see the status of your Apache kafka broker under targets.

You can visit http:/localhost:3000 to access Grafana. The default username is admin, which is provided in the .env file, and the password is admin. Once you log in, it will prompt you to create a new password.

Once logged in, you will see a screen like the following:

Where you will need to add your Prometheus data source as shown in the image.

You will select Prometheus as your data source.

You will need to fill in the connection details for your Prometheus container.
To add a new dashboard to Grafana, select New, followed by Import, where you will choose the dashboard-kafka.json file located in the config folder, which is configured for the visualization of Kafka metrics.

Once the file is imported, you will obtain the following screens with multiple panels and graphs representing the metrics of the Apache Kafka cluster and brokers.



You can visit http:/localhost:8080 to access Conduktor. The default username is admin@admin.io, and the password is admin. You can modify these credentials in the environment variables located in the .env file.

The Conduktor tool will allow you to view the status of the cluster as well as visualize the Apache Kafka brokers you have deployed.


In the Conduktor interface, you will be able to see the status of the connection with your configured and connected services, such as kafka-connect and kafka-schema-registry to Apache Kafka.


Conduktor will be useful for conducting the necessary tests and visual management of Apache Kafka. You can create new topics and send/receive messages as well.

From the Conduktor interface, you can create connectors and schemas, manage them, and test them visually.








