Шаблон мониторинга «SBT Corax ConsumerLag»#

Corax предоставляет метрики для оценки отставания (lag) чтения записей из топика группой потребителей от публикации записей в этот же топик. Для публикации метрик Consumer Lag используется класс ru.sbrf.kafka.HttpReporter (реализация интерфейса org.apache.kafka.common.metrics.MetricsReporter для получения и обработки JMX метрик).

Состав шаблона мониторинга#

Шаблон состоит из файлов:

  • userparameter_corax.conf - файл инструкций для zabbix_agent;

  • SBT Corax ConsumerLag.xml - файл шаблона мониторинга, для импорта на zabbix_server

Подготовка к использованию шаблона#

Подготовка Corax#

Требуемая версия Corax

6.272.0 и выше.

Для активации экспорта метрик в конфигурационном файле Corax server.properties добавьте строки (значения приведены для примеров):

; список классов (reporters), которые будут использоваться для отправки метрик в сторонние системы
metric.reporters=ru.sbrf.kafka.HttpReporter
; порт, через который предоставляется HTTP-интерфейс для доступа к метрикам
metrics.http.port=7011
; IP-адрес или имя хоста, на котором запущен сервис для публикации метрик
metrics.http.host=127.0.0.1
; контекстный путь (URL) для HTTP-ендпоинта, для доступа к метрикам
metrics.http.group.all.httpcontext=metrics
; регулярное выражение для фильтрации доступных метрик
metrics.http.group.all.regexpfilter=kafka.server.ReplicaManager.LogEndOffset.*|kafka.coordinator.group.GroupMetadata.offset.*|kafka.coordinator.group.PublishConsumersLagsTask.*
; включить/отключить сбор информации о смещениях
offset.metadata.group.metrics.enabled=true
; включить/выключить сбор детальной информации по каждому потребителю внутри группы потребителей
offset.metadata.group.detailed.metrics.enabled=false
; интервал (в миллисекундах) обновления метрик
offset.metadata.group.lag.period=60
; включить/выключить добавление временной метки к показателю отставания
offset.metadata.group.lag.timestamps.enabled=true
; размер пула потоков, используемых для обработки запросов на получение показателей отставания
offset.metadata.group.lag.pool.size=4

Настройка Zabbix#

  1. Импортируйте из файла SBT Corax ConsumerLag.xml шаблон мониторинга на сервер Zabbix.

  2. На сервере Corax поместите файл userparameter_corax.conf в каталог для пользовательских параметров Zabbix агента. Расположение этой директории зависит от конфигурации агента.

  3. Настройте хосты на сервере Zabbix:

    1. Для каждой записи вида kafka_coordinator_group_PublishConsumersLagsTask_lag{group="gav",topic="gav"} 0 на хосте будет создан элемент данных Lag{group=gav,topic=gav} и триггер gav@gav lag too much.

      По умолчанию триггеры создаются неактивными и с общим для всех порогом срабатывания, установленным в макросе {$CORAX.MAX_GROUP_LAG.AVERAGE}.

      Для активации триггера переключите его состояние из Disabled в Enabled.

    2. Настройте порог срабатывания: создайте на хосте дополнительный макрос вида {$CORAX.MAX_GROUP_LAG.AVERAGE:"group_name@topic_name} и установите для этого макроса требуемое значение порога срабатывания.

      Для примера из пункта 3.1 макрос должен быть таким: {$CORAX.MAX_GROUP_LAG.AVERAGE:"gav@gav"}.

Проверка настроек#

Проверить работоспособность можно выполнив запрос по указанным в server.properties настройкам, например:

curl http://127.0.0.1:7011/metrics/

Пример вывода:

kafka_coordinator_group_PublishConsumersLagsTask_lag{group="gav",topic="avg"} 0
kafka_coordinator_group_PublishConsumersLagsTask_lag{group="gav",topic="gav"} 0
kafka_coordinator_group_GroupMetadata_offset{group="avg",topic="avg",partition="all"} 21
kafka_coordinator_group_PublishConsumersLagsTask_lagTimestamp{group="gav",topic="gav"} 1711022159949
kafka_server_ReplicaManager_LogEndOffset{topic="gav"} 39
kafka_coordinator_group_PublishConsumersLagsTask_lagTimestamp{group="gav",topic="avg"} 1711022159949
kafka_coordinator_group_GroupMetadata_offset{group="gav",topic="gav",partition="all"} 39
kafka_coordinator_group_PublishConsumersLagsTask_lagTimestamp{group="avg",topic="avg"} 1711022159949
kafka_coordinator_group_PublishConsumersLagsTask_lag{group="avg",topic="avg"} 0
kafka_server_ReplicaManager_LogEndOffset{topic="__consumer_offsets"} 49060
kafka_server_ReplicaManager_LogEndOffset{topic="avg"} 21
kafka_coordinator_group_GroupMetadata_offset{group="gav",topic="avg",partition="all"} 21