Déployer une plateforme Apache Kafka scalable avec KRaft et monitoring

Publié le 24 juin 2025

Infrastructure
Big Data
Streaming

Apache Kafka est la référence pour le streaming de données en temps réel. Depuis la version 3.0, Kafka propose le mode KRaft (Kafka Raft) qui permet de se passer de ZooKeeper, simplifiant l'architecture. Ce guide détaille la mise en place d'un cluster Kafka en mode KRaft, sa scalabilité et la supervision des métriques avec Prometheus et Grafana.

Prérequis

  • 3 nœuds minimum pour les brokers Kafka
  • Java 11+ installé sur chaque nœud
  • Docker & Docker Compose (optionnel pour démo)
  • Réseau fiable (1 GbE minimum)

Architecture cible

  • Cluster KRaft : brokers configurés pour le mode KRaft, contrôleurs intégrés
  • Prometheus pour la collecte des métriques
  • Grafana pour le dashboarding

Installation de Kafka en mode KRaft

Téléchargement et décompression

wget https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz
tar xzf kafka_2.13-3.4.0.tgz
cd kafka_2.13-3.4.0

Initialiser le quorum des contrôleurs

Sur le premier nœud (controller):

bin/kafka-storage.sh random-uuid > cluster-id.txt
bin/kafka-storage.sh format -t $(cat cluster-id.txt) -c config/kraft/server.properties

Copiez cluster-id.txt sur tous les nœuds.

Configuration server.properties

Modifiez /path/to/kafka/config/kraft/server.properties :

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@192.168.1.10:9093,2@192.168.1.11:9093,3@192.168.1.12:9093
listeners=PLAINTEXT://192.168.1.10:9092,CONTROLLER://192.168.1.10:9093
inter.broker.listener.name=PLAINTEXT
controller.listener.names=CONTROLLER
log.dirs=/var/lib/kafka/data

Adaptez node.id et les adresses pour chaque nœud.

Démarrage des brokers

bin/kafka-server-start.sh config/kraft/server.properties

Création de topics et test

bin/kafka-topics.sh --create --topic test --bootstrap-server 192.168.1.10:9092 --partitions 3 --replication-factor 2
bin/kafka-console-producer.sh --topic test --bootstrap-server 192.168.1.10:9092
bin/kafka-console-consumer.sh --topic test --bootstrap-server 192.168.1.10:9092 --from-beginning

Monitoring avec Prometheus et JMX Exporter

Télécharger JMX Exporter

wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar

Configurer l’agent dans server.properties

Ajoutez :

KAFKA_JMX_OPTS="-javaagent:/path/to/jmx_prometheus_javaagent-0.16.1.jar=9404:/path/to/kafka-2_0_0.yml"
export KAFKA_JMX_OPTS

Créez kafka-2_0_0.yml avec les rules Prometheus officielles.

Déployer Prometheus

Fichier prometheus.yml :

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'kafka'
    static_configs:
      - targets: ['192.168.1.10:9404','192.168.1.11:9404','192.168.1.12:9404']

Lancez Prometheus :

docker run -d -p 9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

Dashboard Grafana

  • Ajoutez la source de données Prometheus (http://localhost:9090)
  • Importez un dashboard Kafka (ex : ID 721 sur Grafana.com)

Conclusion

En mode KRaft, Kafka gagne en simplicité et en robustesse. Ce cluster Kafka hautement disponible, supervisé par Prometheus et Grafana, répond aux besoins de streaming pour les applications critiques et Big Data.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets.

Contactez-nous

Articles similaires qui pourraient vous intéresser