Гайды

Мониторинг Kafka: JMX, Prometheus и Kafka Exporter

JMX и javaagent, Kafka Exporter, ключевые метрики и алерты, логи брокера и дашборды Grafana.

~10 мин чтения

Мониторинг Kafka: JMX, Prometheus и Kafka Exporter

Мониторинг Kafka опирается на JMX-метрики брокеров, Yammer/JMX в старых клиентах и экспортеры в Prometheus. Цель — заранее видеть проблемы с диском, under-replicated partitions, рост lag consumer'ов и GC/CPU на брокерах. Базовая модель — Apache Kafka: топики, партиции и оффсеты.


1. JMX на брокере

Kafka брокер публикует сотни MBean'ов. Типичный путь: JMX Exporter (javaagent) или kafka_exporter (от Daniel Qian / community) как отдельный процесс, опрашивающий JMX.

Важно: не открывайте JMX в интернет; только внутри сети или через mTLS sidecar.


2. Kafka Exporter (Prometheus)

Фокус на broker + topic + consumer group метриках, удобных для Grafana:

  • Consumer lag по группе/топику/партиции
  • Offsets high/low
  • Under-replicated partitions
  • Broker count, leader count

Ограничение: exporter должен достучаться до всех брокеров и иногда требует ACL на describe groups.


3. JMX Exporter javaagent

Подключается к JVM брокера, отдаёт /metrics для Prometheus. Плюс — полный набор JMX; минус — нужно курировать whitelist bean'ов, иначе кардинальность метрик взорвётся.


4. Ключевые метрики (что алертить)

Метрика / сигналПочему важно
Offline / under-replicated partitionsПотеря HA, риск потери данных при сбоях
Request handler idle / request queueПерегруз CPU или диска
Log flush / disk waitДиск — частый bottleneck
Consumer lagОбработка не успевает
ISR shrinkРеплики отстают
GC time (брокер JVM)Паузы → таймауты клиентов

5. Логи

server.logкорреляция с метриками при ребалансах контроллера, LogDirFailure, OOM. Централизованный сбор (Loki, ELK) + структурированные поля.


6. Grafana

Дашборды: официальные/сообщества для Kafka + JVM + OS (iowait, disk latency). Отдельные панели на producer/consumer приложений (micrometer → Prometheus).


7. Burrow и lag (legacy нота)

Burrow исторически использовали для lag по группам; сейчас часто достаточно Kafka Exporter + __consumer_offsets метаданные. Выбор зависит от версии и политики безопасности.


8. KRaft и облачные managed-сервисы

В режиме KRaft нет ZooKeeper — следите за метриками контроллера и metadata log отдельно от брокерских. В MSK / Confluent Cloud / Aiven часть JMX скрыта; используйте встроенные CloudWatch/Stackdriver интеграции и экспорт в Prometheus через remote_write или vendor-коннектор.


9. Чек-лист

  • Prometheus scrape всех брокеров + exporter'ов.
  • Алерты на URP, offline partitions, disk free, lag p95.
  • Дашборд по партициям/топикам для hot spot анализа.
  • JMX не exposed публично.

Дальше: KRaft vs ZooKeeper · Connect · Тег Kafka