Как отследить отставание потребителя в кафке через jmx? - PullRequest
3 голосов
/ 07 апреля 2019

У меня есть настройка kafka, которая включает экспортер jmx в prometheus.Я ищу показатель, который дает лаг смещения на основе темы и groupid.Я использую kafka 2.2.0.

Некоторые онлайн-ресурсы указывают на метрику под названием kafka.consumer, но у меня нет такой метрики в моей настройке.

Из моего jmxterminal:

$>domains
#following domains are available
JMImplementation
com.sun.management
java.lang
java.nio
java.util.logging
jdk.management.jfr
kafka
kafka.cluster
kafka.controller
kafka.coordinator.group
kafka.coordinator.transaction
kafka.log
kafka.network
kafka.server
kafka.utils

Однако я могу просмотреть нужные мне данные, используя следующую команду:

root@kafka-0:/kafka# bin/kafka-consumer-groups.sh --describe --group benchmark_consumer_group --bootstrap-server localhost:9092
Consumer group 'benchmark_consumer_group' has no active members.

TOPIC               PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
benchmark_topic_10B 2          2795128         54223220        51428092        -               -               -
benchmark_topic_10B 9          4               4               0               -               -               -
benchmark_topic_10B 6          7               7               0               -               -               -
benchmark_topic_10B 7          5               5               0               -               -               -
benchmark_topic_10B 0          2834028         54224939        51390911        -               -               -
benchmark_topic_10B 1          15342331        54222342        38880011        -               -               -
benchmark_topic_10B 4          5               5               0               -               -               -
benchmark_topic_10B 5          6               6               0               -               -               -
benchmark_topic_10B 8          8               8               0               -               -               -
benchmark_topic_10B 3          4               4               0               -               -               -


Но это не помогает, поскольку мне нужно отслеживать данные из метрики.Кроме того, выполнение этой команды занимает около 25 секунд, что делает необоснованным использование ее в качестве источника метрик.

Я предполагаю, что метрика kafka.consumer не существует в версии 2.2.0 и была заменена другой,Хотя я не могу найти в Интернете никаких ресурсов с актуальной информацией о том, как и где получить этот показатель

Ответы [ 2 ]

2 голосов
/ 07 апреля 2019

Метрики kafka.consumer JMX присутствуют только в самих пользовательских процессах, а не в процессах брокера Kafka. Обратите внимание, что вы не получите метрику kafka.consumer от потребителей, использующих библиотеку потребителей, отличную от библиотеки Java.

В настоящее время нет доступных JMX-метрик для задержки потребителей от самого брокера Kafka. Существуют и другие решения, которые обычно используются для мониторинга отставания потребителей, такие как Burrow от LinkedIn. Есть также несколько проектов с открытым исходным кодом, таких как kafka9.offsets , которые предоставляют метрики задержки потребителей через JMX, но могут не обновляться для работы с последней версией Kafka.

1 голос
/ 28 апреля 2019

Вы можете попробовать Kafka Minion (https://github.com/cloudworkz/kafka-minion). Хотя Kafka Minion внутренне работает аналогично Burrow (использует тему __consumer_offsets для смещений групп потребителей), у него есть несколько преимуществ для вашего варианта использования

Преимущества Kafka Minion над Burrow для вашего случая:

  • Имеет встроенную поддержку Prometheus (не требуется дополнительного развертывания, чтобы просто показать метрики для Prometheus)
  • Имеет образец приборной панели Grafana
  • Имеет дополнительные метрики (такие как отметка времени последнего коммита для группы потребителей: тема: комбинация разделов, коммиты, информация о политике очистки, вы можете перечислить все группы потребителей для данной темы и т. Д.)
  • Не включена зависимость zookeeper (что также означает, что потребители, которые все еще фиксируют смещения в zookeeper, не поддерживаются)
  • Поддержка высокой доступности (!!). У Burrow есть проблема, заключающаяся в том, что он всегда будет отображать метрики, что будет неправильно, когда он только начнет использовать тему __consumer_offsets. Поэтому вы не можете запустить его в режиме высокой доступности. Это проблема, когда вы хотите настроить оповещения на основе лагов группы потребителей
  • Kafka Minion не поддерживает несколько кластеров, что снижает сложность в коде и в качестве конечного пользователя. Очевидно, вы все еще можете развернуть Kafka Minion на кластер

Отказ от ответственности: Я являюсь автором Kafka Minion, и я все еще ищу больше отзывов от других пользователей. Я намерен активно поддерживать и развивать экспортер для моих проектов, компанию, в которой я работаю, и для сообщества.

Чтобы ответить на ваш вопрос относительно того, что вы видите, с помощью сценария оболочки kafka-consumer-groups.sh. Это не сработает, поскольку не может сообщать о задержках для неактивных потребителей, что немного контрпродуктивно.

...