Monitoring et dépannage Kafka
Maîtriser les métriques, analyser les lags, diagnostiquer les pannes et mettre en place une observabilité complète de Kafka grâce à JMX, Prometheus, Grafana et Cruise Control.
Contexte
Kafka est conçu pour supporter de très forts débits et des charges critiques. Pour garantir sa fiabilité, il est indispensable de mettre en place un monitoring robuste couvrant :
- les brokers (CPU, heap, GC, réplication, ISR),
- les producteurs (taux d’échec, latence),
- les consommateurs (lag, rebalances, commits),
- les topologies Kafka Streams,
- les connecteurs Kafka Connect,
- la santé des partitions,
- le cluster (sous / surcharge, rééquilibrage).
Ce chapitre présente une méthodologie complète pour monitorer, diagnostiquer et dépanner Kafka.
Lexique
Différence entre la position du consommateur et le dernier message produit.
Interface Java exposant les métriques internes des brokers Kafka.
Collecte et stocke les métriques sous format time-series.
Visualise les métriques avec des tableaux de bord interactifs.
Outil d’équilibrage automatique pour Kafka (rebalance, optimisation).
Partitions dont les ISR ne contiennent pas tous les réplicas.
Diagramme
Architecture standard : Brokers + JMX Exporter + Prometheus + Grafana + Kafka Exporter.
Commandes pratiques essentielles
# 1) Lister les groupes de consommateurs
bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--list
# 2) Inspecter le lag d’un groupe
bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe --group ecommerce-frontend
# 3) Vérifier les ISR
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--describe --topic commandes.ecommerce
# 4) Afficher les erreurs en temps réel
tail -f logs/server.log | grep ERROR
# 5) Exposer les métriques JMX
JMX_PORT=9999 \
bin/kafka-server-start.sh config/server.properties
Ces commandes suffisent à diagnostiquer 80% des incidents.
Métriques essentielles à monitorer
1. Brokers
- CPU / Heap / GC
- Under-replicated partitions
- Offline partitions
- ISR shrink / expand rate
- Network handler threads saturés
2. Producteurs
- Retry rate
- Request latency
- Error rate (timeout, not enough replicas)
3. Consommateurs
- Lag par partition
- Commit failures
- Rebalances trop fréquents
4. Kafka Streams
- Process-rate
- Errored records
- RocksDB metrics
5. Kafka Connect
- Task failures
- Tasks running
- Records consumed / produced rate
Contenu réservé — connectez-vous.
Monitoring Prometheus + Grafana
Kafka expose les métriques via JMX. Le JMX Exporter les expose ensuite en HTTP pour Prometheus.
# Exemple jmx_exporter.yml lowercaseOutputName: true rules: - pattern: "kafka.server<>Count" name: kafka_$1_$2_total - pattern: "kafka.server <>([0-9]+)" name: kafka_$1_$2 type: GAUGE
Dans Prometheus :
- job_name: kafka
static_configs:
- targets:
- "broker1:9404"
- "broker2:9404"
Dans Grafana, importer un dashboard Kafka (ID 721 chez Grafana Labs).
Dépannage : problèmes courants & solutions
1. Lag élevé sur un consumer
- Vérifier si un rebalance est en cours
- Vérifier la performance du consumer (threading / batch)
- Vérifier les partitions qui ne progressent plus
- Augmenter le parallélisme → plus de partitions
2. Under-replicated partitions
- Vérifier la connectivité réseau
- Augmenter
replica.lag.time.max.ms - Réduire la saturation CPU disque
3. Consumer bloqué en rebalance
- Augmenter
max.poll.interval.ms - Ajuster
session.timeout.ms
4. Producteur en erreur « not enough replicas »
- Augmenter le facteur de réplication
- Vérifier les leaders offline
- Utiliser
acks=all+ retries
Contenu réservé — connectez-vous.
Cruise Control : optimisation automatique du cluster
Cruise Control gère :
- équilibrage des partitions,
- détection automatique d’anomalies,
- moves de partitions maîtrisés,
- planification des rebalances.
# Exemple : demander une optimisation
curl -XPOST "http://cruise-control:9090/kafkacruisecontrol/rebalance"
- Mettre en place des tableaux de bord par environnement.
- Activer une alerte sur under-replicated partitions & offline partitions.
- Monitorer séparément les producteurs & consommateurs.
- Activez JMX + Prometheus systématiquement.
Résultat attendu
Une plateforme Kafka entièrement monitorée, avec alertes proactives, détection des lags, observabilité complète et capacité de dépannage rapide en production.
Résumé
Le monitoring Kafka combine JMX, Prometheus, Grafana et Cruise Control pour offrir une visibilité en temps réel sur l’état du cluster. Une bonne observabilité permet d’assurer la fiabilité de tous les flux de données.
Quiz rapide
- Quelles métriques surveiller sur un broker Kafka ?
- Comment identifier un consumer en retard ?
- Quelle est la cause la plus fréquente d’ISR qui rétrécit ?
- Quels outils recommandez-vous pour monitorer Kafka ?
Exercice pratique
Installez Prometheus + Grafana + JMX Exporter → configurez un dashboard Kafka affichant :
- nombre de partitions under-replicated,
- taux de production/consommation,
- latence des producteurs,
- lag des consommateurs.
Ateliers techniques
Atelier 1 – Analyse complète d’un lag anormal
- Simulation d’un consumer lent
- Analyse du lag par partition
- Analyse des rebalances
- Optimisation du consumer
Atelier 2 – Mise en place d’un tableau de bord Grafana
- Installation JMX Exporter
- Scraping Prometheus
- Dashboard broker + consumer
Atelier 3 – Dépannage avancé d’un broker
- Analyse CPU / heap / GC
- Analyse des partitions offline
- Analyse ISR shrink
