События мониторинга#
По умолчанию в Corax отключен удаленный доступ к JMX. Вы можете включить удаленный мониторинг с помощью JMX, установив переменную среды JMX_PORT для процессов, запущенных с использованием CLI или встроенными средствами Java, чтобы включить удаленный доступ к JMX. Так же, вы должны обезопасносить сервис, при включении удаленного JMX в PROD сценариях, чтобы неавторизованные пользователи не могли отслеживать или контролировать Kafka брокеры или приложение, а также платформу, на которой они работают. Обратите внимание, что аутентификация для JMX по умолчанию в Kafka отключена, и конфигурации безопасности должны быть изменены для PROD развертываний, установив переменную среды KAFKA_JMX_OPTS для процессов, запущенных с помощью CLI, или установив соответствующие параметры вашей версии Java.
В данном разделе содержатся основные метрики для мониторинга Kafka и Zookeeper.
Kafka Broker Metrics#
Группа |
Описание группы |
JMX метрика |
Описание |
|---|---|---|---|
Показатели нагрузки |
Количество входящих сообщений в секунду(по всем топикам) |
|
Количество входящих сообщений в секунду. |
Количество запросов в секунду(Requests PerSec) |
k |
Количество запросов в секунду. |
|
Объем данных на запись и на чтение в секунду (BytestIn/OutPerSec) |
|
Количество исходящих байт в секунду. |
|
Количество записей в лог в секунду/Время записи в лог (LogFlushRateAndTimeMs) |
|
Количество записей в лог в секунду. |
|
Количество produce-запросов в секунду (TotalProduceRequestsPerSec) |
|
Количество produce-запросов в секунду. |
|
Размер очереди запросов |
|
Размер очереди запросов. |
|
Количество лидеров, партиций |
Количество лидеров и партиций |
|
Количество партиций должно быть примерно одинаковое для всех брокеров. |
Показатели репликации |
Сокращение и расширение синхронизированных реплик в секунду |
|
Метрика IsrExpandsPerSec показывает увеличение количества партиций, входящих в ISR, в секунду. |
Максимальное отставание в репликации |
|
Максимальное отставание в реплицировании сообщений между лидером и follower. |
|
Показатели отложенных запросов |
Число истекших запросов в секунду |
`kafka.server:type=DelayedFetchMetrics,name=ExpiresPerSec,fetcherType={follower |
consumer}` |
Объем хранилища отложенных запросов |
`kafka.server:type=DelayedOperationPurgatory,name=PurgatorySize,delayedOperation={Fetch |
Produce}` |
|
Показатели загруженности обработчиков |
Cредний процент времени простоя обработчика запросов в пуле |
|
Средняя доля времени простоя обработчиков запросов. |
Средний процент времени простоя сетевых процессоров |
|
Средняя доля времени простоя сетевых процессоров. |
|
Статистика состояний подключения клиентов к Zookeeper |
Статистика состояний подключения клиентов к Zookeeper |
|
Количество ошибок аутентификации в секунду |
|
Количество разъединений в секунду |
||
|
Количество истекших сессий в секунду |
||
|
Количество подключений только на чтение в секунду. |
||
|
Количество успешных аутентификаций в секунду |
||
|
Количество успешных подключений в секунду |
||
Время обработки запросов консьюмеров на получение новых данных |
Общее время обработки запросов |
|
Общее время, необходимое для обработки запроса. |
Время ожидания ответа follower |
|
Время ожидания ответа follower. |
|
Время нахождения запроса в очереди запросов на обработку брокером |
|
Время нахождения запроса на получение данных в очереди запросов на обработку брокером. |
|
Время обработки запроса лидером партиции |
|
Время обработки запроса лидером партиции (подготовки ответа). |
|
Время нахождения ответа в очереди отправки |
|
Время нахождения ответа в очереди отправки. |
|
Время отправки ответа клиенту |
|
Время отправки ответа клиенту в секунду |
|
Время обработки запросов продьюсеров на отправку данных |
Общее время обработки запросов |
|
Общее время, необходимое для обработки запроса. |
Время ожидания ответа follower |
|
Время ожидания ответа follower. |
|
Время нахождения запроса в очереди запросов на обработку брокером |
|
Время нахождения запроса на получение данных в очереди запросов на обработку брокером. |
|
Время обработки запроса лидером партиции |
|
Время обработки запроса лидером партиции (подготовки ответа) |
|
Время нахождения ответа в очереди отправки |
|
Время нахождения ответа в очереди отправки. |
|
Время отправки ответа клиенту |
|
Время отправки ответа клиенту в секунду |
|
Время обработки запросов фолловеров на получение новых данных |
Общее время обработки запросов |
kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchFollower |
Общее время, необходимое для обработки запроса. |
Время ожидания ответа follower |
|
Время ожидания ответа follower. |
|
Время нахождения запроса в очереди запросов на обработку брокером |
kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request=FetchFollower |
Время нахождения запроса на получение данных в очереди запросов на обработку брокером. |
|
Время обработки запроса лидером партиции |
|
Время обработки запроса лидером партиции (подготовки ответа) |
|
Время нахождения ответа в очереди отправки |
|
Время нахождения ответа в очереди отправки. |
|
Время отправки ответа клиенту |
|
Время отправки ответа клиенту в секунду. |
|
Метрики JVM |
Количество срабатываний GC в минуту |
|
|
Показатели Heap памяти |
|
Размер Heap памяти используемый инстансом Java в байтах |
|
Показатели Non-Heap памяти |
|
Размер Non-Heap памяти используемый инстансом Java в байтах |
|
Показатели fetch-сессий |
Показатели инкрементальных fetch-сессий |
|
Количество инкрементальных fetch-сессий |
|
Количество партиций закешированных в инкрементальных fetch-сессиях |
||
|
Количество инкрементальных fetch-сессий удаленных из кэша |
Kafka Cluster Metrics#
Группа |
Описание группы |
JMX метрика |
Описание |
|---|---|---|---|
Метрики контроллера |
Число активных контроллеров |
|
Первый запустившаяся узел в кластере Corax становится контроллером. Контроллер кластера отвечает за ведения списка лидеров партиций, и координацию смены лидера, если текучий лидер становится недоступным. |
Суммарное количество выборов лидера |
|
Суммарное количество выборов лидера. |
|
Число партиций без лидера |
|
Партиции не имеющие активного лидера(офлайн-партиции) не доступны для записи и чтения. |
|
Число незареплицированных партиций |
|
В «здоровом» Corax-кластере все партиции должны быть зареплицированны, чтобы при падении лидера не было потерь данных. |
|
Количество UncleanLeaderElections в секунду |
|
Если лидер партиции упал, и при этом нет ни одной синхронизированной реплики, то в этом случае у брокеров есть 2 варианта действий в зависимости от настройки unclean.leader.election.enable: |
|
Ожидание удаления топика |
|
Поскольку удаление темы не всегда может быть выполнено сразу, контроллер помечает тему для удаления и ставит ее в очередь для последующей обработки. Когда большое количество тем (и их реплик) удаляется одновременно, контроллеру может потребоваться значительное время, чтобы обработать все. В это время контроллер может снижать производительность. В такие моменты необходимо знать, сколько тем и реплик еще предстоит удалить. В настоящее время оператор может только проверить прогресс удаления темы, посмотрев непосредственно в ZooKeeper на znode / admin / delete_topics. |
|
Ожидание удаления реплики |
|
||
Темы неудаляемые на данный момент |
|
||
Реплики неудаляемые на данный момент |
|
||
Показатели нагрузки |
Количество входящих сообщений в секунду |
|
Количество входящих сообщений в секунду. |
Объем данных на запись и на чтение в секунду |
|
Количество исходящих байт в секунду. |
|
Количество запросов в секунду |
`kafka.network:type=RequestMetrics,name=RequestsPerSec,request={FetchConsumer |
Produce |
|
Количество записей в лог в секунду |
|
Количество записей в лог в секунду |
|
|
Количество лидеров и партиций |
|
Количество партиций партиций на брокере. |
Число активных подключений к Zookeeper |
`org.apache.ZooKeeperService:name0=ReplicatedServer_id[0-9]+,name1=replica.[0-9]+,name2={Follower |
Leader}` |
Kafka Topic Metrics#
JMX метрика |
Описание |
|---|---|
|
Количество входящих сообщений в секунду по топикам (Топ $topics_count) |
Zookeeper Metrics#
| Группа | JMX метрика | Описание |
|—|—|—|—|
| Число активных подключений к Zookeeper | org.apache.ZooKeeperService:name0=ReplicatedServer_id[0-9]+,name1=replica.[0-9]+,name2={Follower|Leader} NumAliveConnections | Число активных подключений к Zookeeper.
Метрика необходима для анализа текущего состоянии загруженности сети в рамках Zookeeper |
| Количество срабатываний GC в минуту
Среднее время работы GC
Процент работы GC от общего времени работы JVM | java.lang:type=GarbageCollector,name=<GC name> CollectionTimejava.lang:type=GarbageCollector,name=<GC name> CollectionCount | |
| | Показатели Heap памяти | java.lang:type=Memory HeapMemory.commitedjava.lang:type=Memory HeapMemory.usedjava.lang:type=Memory HeapMemory.initjava.lang:type=Memory HeapMemory.max | Размер Heap памяти используемый инстансом Java в байтах |
| | Показатели Non-Heap памяти | java.lang:type=Memory NonHeapMemory.commitedjava.lang:type=Memory NonHeapMemory.usedjava.lang:type=Memory NonHeapMemory.initjava.lang:type=Memory NonHeapMemory.max | Размер Non-Heap памяти используемый инстансом Java в байтах |
ZooKeeper предоставляет метрики через MBeans, через CLI предоставляемые AdminServer:
echo mntr | nc localhost 2181
или
curl http://localhost:8080/commands/monitor
Имя метрики |
Описание |
Тип метрики |
Способ получения метрики |
|---|---|---|---|
pending_syncs |
Количество ожидающих sync от followers |
Other |
Four-letter words, AdminServer, JMX |
outstanding_requests |
Количество запросов в очереди |
Resource: Saturation |
Four-letter words, AdminServer, JMX |
open_file_descriptor_count |
Количество используемых файловых дескрипторов |
Resource: Utilization |
Four-letter words, AdminServer |
num_alive_connections |
Количество клиентов, подключенных к ZooKeeper |
Resource: Availability |
Four-letter words, AdminServer, JMX |
followers |
Количество активных followers |
Resource: Availability |
Four-letter words, AdminServer |
avg_latency |
Время, необходимое для ответа на запрос клиента (в ms) |
Work: Throughput |
Four-letter words, AdminServer, JMX |