Гайды
Мониторинг 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