Мониторинг EVTD#

Настройка#

Мониторинг производится:

  • Самостоятельно через преднастроенный JMX-порт. Настройки JMX-порта задаются перед установкой в конфигурационном файле vars.yml, подробнее описано в документе «Руководство по установке» в разделе «Подготовка окружения EVTD» (подраздел «Пример заполненного файла vars.yml для EVTD»);

  • С помощью произвольной системы мониторинга. В качестве системы мониторинга может быть использован компонент EDMN продукта Platform V Synapse Event-domain management (EDM) или любая другая система мониторинга. Настройки системы мониторинга заносятся в конфигурационный файл vars.yml.

Метрики#

Группа метрик «Кластер»#

Область действия метрики

Метрика

Триггер

MBEAN Name

Кластер

Список брокеров кластера

Не должно изменяться

describeCluster()
KafkaClusterBrokersCount,
KafkaClusterBrokersList

Кластер

Список живых брокеров

Не должно изменяться

Варианты:
1) Скрипт ./bin/zookeeper-shell.sh localhost:2181 ls /brokers/ids возвращает список живых брокеров;
2) Также можно использовать любую JMX-метрику, например:
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec — если она обновляется — значит брокер работает;
3) Есть jmx метрика: kafka.server:type=KafkaServer,name=BrokerState — она возвращает значения:
Broker State = 0: Not Running
Broker State = 1: Starting
Broker State = 2: Recovering from Unclean Shutdown
Broker State = 3: Running as Broker
Broker State = 4: Running as Controller
Broker State = 5: Pending Controlled Shutdown
Broker State = 6: Broker Shutting Down

Кластер

Наличие активного лидера кластера

Должен быть 1

kafka.controller:type=KafkaController,name=ActiveControllerCount
суммируются значения метрики по всем брокерам кластера

Группа метрик «Брокер»#

Область действия метрики

Метрика

Триггер

MBEAN Name

Брокер

Загрузка DRIVE

Если максимальное значение больше 80% – предупреждение, 90% – ошибка

Настроить мониторинг свободного места на узле EVTD

Брокер

Количественные показатели работы брокера в байтах

Должно быть больше 0

kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec

Брокер

Партиции не полностью среплицированные

Не должно увеличиваться

kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions

Брокер

Партиции не доступные

Не должно быть

kafka.controller:type=KafkaController,name=OfflinePartitionsCount

Брокер

Количество запросов к брокеру-лидеру

Должно быть > 0

kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchFollower

Брокер

Количество неудачных запросов на брокер

Не должно увеличиваться

kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec
kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec

Брокер

Размеры очередей

Не должны увеличиваться

kafka.network:type=RequestChannel,name=RequestQueueSize
kafka.network:type=RequestChannel,name=ResponseQueueSize

Группа метрик «Topic»#

Область действия метрики

Метрика

Триггер

MBEAN Name

Topic

Нагрузка на топики в TPS – сколько сообщений поступает в topic за секунду в шт.

Среднее должно быть > 0

kafka.server:type=BrokerTopicMetrics,name=TotalFetchRequestsPerSec,topic=

Topic

Нагрузка на топики – какой объем данных записывается
Атрибут Count используется для учета потребления

Среднее должно быть > 0

kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec,topic=

Topic

Нагрузка на топики – какой объем данных вычитывается

Среднее должно быть > 0

kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec,topic=

Группа метрик «Подписчик»#

Область действия метрики

Метрика

Триггер

MBEAN Name

Подписчик

Лаг на топиках по consumer group – показывает, какая группа плохо читает/перестала читать

Не должен увеличиваться

Лаги и вся информация о consumer_offsets хранится в служебном топике __consumer_offsets, поэтому получить информацию о консьюмер группах можно только оттуда.
Что можно сделать:
- прочитать и распарсить самим метрики из JMX kafka.log.Log.LogStartOffset и LogEndOffset — вычесть одно из другого, чтобы получить лаг
— сделать запрос через API Apache Kafka напрямую describeConsumerGroups и получить информацию по TCP в уже конкретных объектах

Отслеживаемые метрики не порождаются компонентами программного компонента EVTD.