Шаблон мониторинга «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#
Импортируйте из файла
SBT Corax ConsumerLag.xmlшаблон мониторинга на сервер Zabbix.На сервере Corax поместите файл
userparameter_corax.confв каталог для пользовательских параметров Zabbix агента. Расположение этой директории зависит от конфигурации агента.Настройте хосты на сервере Zabbix:
Для каждой записи вида
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.Настройте порог срабатывания: создайте на хосте дополнительный макрос вида
{$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