Мониторинг Kafka Lag

Что такое Apache Kafka? Это брокер сообщений. На подобии RabbitMQ

Что такое Lag?
Lag is simply the delta between the last produced message and the last consumer’s committed offset. Today, offsets are stored in a special topic called __consumer_offsets . Prior to version 0.9, Kafka used to save offsets in ZooKeeper itself.

Грубо говоря, это разница между сообщение созданным и сообщением прочитанным.
Как это можно замониторить? И для чего это?
Конечно же мы можем посмотреть это через Kafka CLI,

но ты всем не выдашь доступ к серверу и поэтому лучше для этого прикрутить мониторинг.

Для примера у меня на хосте установлен podman.

podman run -p 9308:9308 --rm docker.io/danielqsj/kafka-exporter --kafka.server=localhost:9092

(тут указывайте свой брокер сообщений)

Вот так мы запускаем контейнер, который слушает наш Кафка брокер и выдает метрики.

Для проверки введите команду:

ss -lntp

и посмотрите действительно ли запустился контейнер на том порту
Далее вы можете проверить метрики вот так:

curl localhost:9308/metrics

Вам ответом выдаст большую простыню метрик, если вы корректно запустили контейнер.
На этом работа не закончена.
На сервере prometheus в prometheus.yml вам необходимо добавить ваш таргет:

  • job_name: monitoring_kafka_lag:
    static_configs:
    • targets:
      • ‘ip_adress_vm:9083’

И вам необходимо перезапустить prometheus, чтоб он перечитал новые директивы и можно приступать уже к выводу графика в Grafana.

Т.е. вы добавляет пустой дашбоард и в запросе пишете:

kafka_consumergroup_lag_sum

Сохраняете и график готов.

Для чего это?
Допустим ваше приложение пишет много изменений и консюмеры должны эти события разобрать. Если кафка лаг растет, то ваш сервиc работает некорректно и соответственно растет очередь сообщений. В итоге допустим у вас есть сервис логов, который еще секундно кладет новые логи тысячами и они не появятся у вас ввиду того, что ваши консюмеры перестали работать.

1 Like