Список метрик#

Метрики EVTP#

Метрика

Описание

Источник

Триггеры

Единица измерения

MBEAN Name

Комментарий

Путь в дереве метрик

FlinkJobManagerCpuLoad

Загрузка CPU

JMX

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

%

org.apache.flink.jobmanager.Status.JVM.CPU.Load:host=*

The recent CPU usage of the JVM

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").CpuLoad

FlinkJobManagerCpuTime

Время использования CPU

JMX

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

мс

org.apache.flink.jobmanager.Status.JVM.CPU.Time:host=*

The CPU time used by the JVM

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").CpuTime

FlinkJobManagerMemoryHeapUsed

Использование MemoryHeap

JMX

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

байт

org.apache.flink.jobmanager.Status.JVM.Memory.Heap.Used:host=*

The amount of heap memory currently used (in bytes)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").MemoryHeapUsed

FlinkJobManagerMemoryHeapCommitted

Количество памяти, доступное JVM

JMX

Должно быть не меньше 100 Мб

байт

org.apache.flink.jobmanager.Status.JVM.Memory.Heap.Committed:host=*

The amount of heap memory guaranteed to be available to the JVM (in bytes)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").HeapCommitted

FlinkJobManagerMemoryHeapMax

Максимальное количество памяти, доступное JVM

JMX

Должно быть не больше 10Gb

байт

org.apache.flink.jobmanager.Status.JVM.Memory.Heap.Max:host=*

The maximum amount of heap memory that can be used for memory management (in bytes)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").MemoryHeapMax

FlinkJobManagerJobRestartingTime

Сколько времени занимает перезапуск Jenkins job или как долго длится текущий перезапуск

JMX

Не больше 10 сек

мс

org.apache.flink.jobmanager.job.restartingTime:host=,job_name=,job_id=*

The time it took to restart the job, or how long the current restart has been in progress (in milliseconds)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).Job(<objectName.key.job_name>).RestartingTime

FlinkJobManagerJobUptime

Время работы Jenkins job

JMX

Должно быть больше -1

мс

org.apache.flink.jobmanager.job.uptime:host=,job_name=,job_id=*

Returns -1 for completed jobs (in milliseconds)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).Job(<objectName.key.job_name>).Uptime

FlinkJobManagerJobDowntime

Время недоступности Jenkins job

JMX

Должно быть равно 0

мс

org.apache.flink.jobmanager.job.downtime:host=,job_name=,job_id=*

For jobs currently in a failing/recovering situation, the time elapsed during this outage. Returns 0 for running jobs and -1 for completed jobs (in milliseconds)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).Job(<objectName.key.job_name>).Downtime

FlinkJobManagerJobNumRestarts

Количество рестартов Jenkins job

JMX

Не больше 5 раз

шт

org.apache.flink.jobmanager.job.numRestarts:host=,job_name=,job_id=*

Total number of restarts since this job was submitted, including full restarts and fine-grained restarts

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).Job(<objectName.key.job_name>).NumRestarts

FlinkJobManagerJobNumberOfFailedCheckpoints

Количество неуспешных контрольных точек

JMX

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

шт

org.apache.flink.jobmanager.job.numberOfFailedCheckpoints:host=,job_name=,job_id=*

The number of failed checkpoints

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).Job(<objectName.key.job_name>).NumberOfFailedCheckpoints

FlinkJobManagerJobLastCheckpointDuration

Время, потраченное на последнюю контрольную точку

JMX

мс

org.apache.flink.jobmanager.job.lastCheckpointDuration:host=,job_name=,job_id=*

The time it took to complete the last checkpoint (in milliseconds)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).Job(<objectName.key.job_name>).LastCheckpointDuration

FlinkJobManagerNumRegisteredTaskManagers

Количество зарегистрированных TaskManager

JMX

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

шт

org.apache.flink.jobmanager.numRegisteredTaskManagers:host=*

The number of registered taskmanagers

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").NumRegisteredTaskManagers

FlinkJobManagerClusterNumRegisteredTaskManagers

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

JMX

шт

org.apache.flink.jobmanager.numRegisteredTaskManagers:host=*

The number of registered taskmanagers

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).NumRegisteredTaskManagers

FlinkJobManagerClusterNumRunningJobs

Количество запущенных Jenkins jobs по кластеру

JMX

Не должно уменьшаться

шт

org.apache.flink.jobmanager.numRunningJobs:host=*

The number of running jobs

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).NumRunningJobs

FlinkJobManagerTaskSlotsAvailable

Количество свободных слотов

JMX

шт

org.apache.flink.jobmanager.taskSlotsAvailable:host=*

The number of available task slots

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").TaskSlotsAvailable

FlinkJobManagerClusterTaskSlotsAvailable

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

JMX

шт

org.apache.flink.jobmanager.taskSlotsAvailable:host=*

The number of available task slots

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskSlotsAvailable

FlinkJobManagerTaskSlotsTotal

Всего слотов

JMX

Не меньше 50?

шт

org.apache.flink.jobmanager.taskSlotsTotal:host=*

The total number of task slots

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).JobManager("<connector.host>:<connector.port>").TaskSlotsTotal

FlinkJobManagerClusterTaskSlotsTotal

Всего слотов по кластеру

JMX

шт

org.apache.flink.jobmanager.taskSlotsTotal:host=*

The total number of task slots

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskSlotsTotal

FlinkTaskManagerCpuLoad

Загрузка CPU TaskManager

JMX

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

байт

org.apache.flink.taskmanager.Status.JVM.CPU.Load:host=,tm_id=

The recent CPU usage of the JVM

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").CpuLoad

FlinkTaskManagerCpuTime

Время использования CPU TaskManager

JMX

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

мс

org.apache.flink.taskmanager.Status.JVM.CPU.Time:host=,tm_id=

The CPU time used by the JVM

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").CpuTime

FlinkTaskManagerMemoryHeapUsed

Используемая память

JMX

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

байт

org.apache.flink.taskmanager.Status.JVM.Memory.Heap.Used:host=,tm_id=

The amount of heap memory currently used (in bytes)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").MemoryHeapUsed

FlinkTaskManagerMemoryHeapCommitted

Количество гарантированной памяти гарантированно доступной

JMX

Должно быть не больше 10Gb

байт

org.apache.flink.taskmanager.Status.JVM.Memory.Heap.Committed:host=,tm_id=

The amount of heap memory guaranteed to be available to the JVM (in bytes)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").MemoryHeapCommitted

FlinkTaskManagerMemoryHeapMax

Максимальное количество памяти, которое может быть использовано

JMX

Должно быть не больше 10Gb

байт

org.apache.flink.taskmanager.Status.JVM.Memory.Heap.Max:host=,tm_id=

The maximum amount of heap memory that can be used for memory management (in bytes)

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").MemoryHeapMax

FlinkTaskManagerJobInputQueueLength

Количество входных сообщений в очереди

JMX

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

шт

org.apache.flink.taskmanager.job.task.Shuffle.Netty.Input.Buffers.inputQueueLength:task_name=,job_id=,task_attempt_id=,job_name=,tm_id=,task_id=,task_attempt_num=,host=,subtask_index=*

The number of queued input buffers

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").Job(<objectName.key.job_name>).InputQueueLength

FlinkTaskManagerJobOutputQueueLength

Количество выходных сообщений в очереди

JMX

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

шт

org.apache.flink.taskmanager.job.task.Shuffle.Netty.Output.Buffers.outputQueueLength:task_name=,job_id=,task_attempt_id=,job_name=,tm_id=,task_id=,task_attempt_num=,host=,subtask_index=*

The number of queued output buffers

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").Job(<objectName.key.job_name>).OutputQueueLength

FlinkTaskManagerJobLag

Максимальный лаг обработки событий

JMX

шт

org.apache.flink.taskmanager.job.task.operator.KafkaSourceReader.KafkaConsumer.records-lag-max:job_id=,job_name=,tm_id=,task_attempt_id=,task_attempt_num=,subtask_index=,task_id=,operator_name=,task_name=,operator_id=,host=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").Job(<objectName.key.job_name>).Source(<objectName.key.task_name>).Lag

FlinkTaskManagerJobInput

Количество входящих событий

JMX

шт

org.apache.flink.taskmanager.job.task.operator.input:job_id=,job_name=,tm_id=,task_attempt_id=,task_attempt_num=,subtask_index=,task_id=,operator_name=,task_name=,operator_id=,host=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").Job(<objectName.key.job_name>).Input

FlinkTaskManagerJobOutput

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

JMX

шт

org.apache.flink.taskmanager.job.task.operator.output:job_id=,job_name=,tm_id=,task_attempt_id=,task_attempt_num=,subtask_index=,task_id=,operator_name=,task_name=,operator_id=,host=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").Job(<objectName.key.job_name>).Output

FlinkTaskManagerJobReject

Количество отфильтрованных событий

JMX

шт

org.apache.flink.taskmanager.job.task.operator.reject:job_id=,job_name=,tm_id=,task_attempt_id=,task_attempt_num=,subtask_index=,task_id=,operator_name=,task_name=,operator_id=,host=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").Job(<objectName.key.job_name>).Reject

FlinkTaskManagerJobError

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

JMX

шт

org.apache.flink.taskmanager.job.task.operator.error:job_id=,job_name=,tm_id=,task_attempt_id=,task_attempt_num=,subtask_index=,task_id=,operator_name=,task_name=,operator_id=,host=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Flink.Cluster(${clusterName}).TaskManager("<connector.host>:<connector.port>").Job(<objectName.key.job_name>).Error

Метрики EVTP tengri#

Метрика

Описание

Источник

Единица измерения

MBEAN Name

FlinkInputPerInterval

Общее число входящих сообщений в Jenkins job за период

JMX

шт

org.apache.flink.taskmanager.job.task.operator.numRecordsOut:job_id=,job_name=,task_attempt_id=,tm_id=,task_attempt_num=,subtask_index=,task_id=,operator_name=,task_name=,operator_id=,host=*

Метрики EVTD#

Метрика

Описание

Источник

Триггеры

Единица измерения

MBEAN Name

Комментарий

Путь в дереве метрик

KafkaLagTopicPartitionEndOffset

Текущий оффсет по партициям topic (endOffset или last produced offset)

JMX

шт

kafka.log:type=Log,name=LogEndOffset,topic=,partition=

Лаг на топик по консьюмер-группе – какая группа плохо читает/перестала читать

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).Partition(<objectName.key.partition>).EndOffset

KafkaSETopicLag

Лаг по топик для Kafka SE - показатель отставания между продюсер и консьюмер в Kafka

JMX

шт

kafka.server:type=KafkaConsumerLagsMetrics,name=AggregatedTopicLagMetrics,Consumer-Group=,topic=

Существует задержка между моментом написания сообщения и моментом его прочтения. Чтение всегда будет отставать от записи, это и есть Consumer Lag

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).TopicLag.Topic(<objectName.key.topic>).ConsumerGroup(<objectName.key.Consumer-Group>).KafkaSETopicLag

KafkaLifeBrokersMessagesInPerSec

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

JMX

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec

Если метрика обновляется, значит брокер жив

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").LivelinessMessagesInPerSec

KafkaMessagesInPerSec

Количество сообщений, полученных брокером в секунду. Считается по данными за последнюю минуту

JMX

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").MessagesInPerSec

KafkaLifeBrokersBrokerState

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

JMX

kafka.server:type=KafkaServer,name=BrokerState

0 - Not Running; 1 - Starting; 2 - Recovering from Unclean Shutdown; 3 - Running as Broker; 4 - Running as Controller; 5 - Pending Controlled Shutdown; 6 - Broker Shutting Down

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").LivelinessBrokerState

KafkaBrokerUptime

Время жизни брокера

JMX

с

java.lang:type=Runtime

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").BrokerUptime

KafkaProcessCpuLoad

Загрузка CPU, память

JMX

%

java.lang:type=OperatingSystem

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").ProcessCpuLoad

KafkaTotalTimeMs99thPercentile

Время отправки ответа, в которое укладывается 99 процентов запросов

JMX

мс

kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").TotalTimeMs99thPercentile

KafkaMemoryUsage

Использование памяти

JMX

байт

java.lang:type=Memory

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").HeapMemoryUsage

KafkaMemoryUsage

Использование памяти

JMX

байт

java.lang:type=Memory

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").NonHeapMemoryUsage

KafkaReplicaMaxLag

Максимальное отставание в репликации, количество сообщений

JMX

шт

kafka.server:type=ReplicaFetcherManager,name=MaxLag,clientId=Replica

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").ReplicaMaxLag

KafkaOfflineReplicaCount

Количество оффлайн реплик

JMX

шт

kafka.server:type=ReplicaManager,name=OfflineReplicaCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").OfflineReplicaCount

KafkaFailedIsrUpdatesPerSec

Количество неуспешных репликаций в секунду

JMX

шт

kafka.server:type=ReplicaManager,name=FailedIsrUpdatesPerSec

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").FailedIsrUpdatesPerSec

KafkaNetworkProcessorAvgIdlePercent

Простой сетевых обработчиков

JMX

%

kafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent

Метрика снимается раз в минуту и показывает средний процент времени простоя сетевых процессов. 100% означает, что сетевые процессы не загружены

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").NetworkProcessorAvgIdlePercent

KafkaNetworkProcessor

Количество успешных аутентификаций в секунду

JMX

kafka.server:type=socket-server-metrics,listener=<protocol>,networkProcessor=<thread_id> successful-authentication-rate

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Protocol(<objectName.key.listener>).Thread(<objectName.key.networkProcessor>).NetworkProcessorSuccessfulAuthenticationRate

KafkaNetworkProcessor

Количество неуспешных аутентификаций в секунду

JMX

kafka.server:type=socket-server-metrics,listener=<protocol>,networkProcessor=<thread_id> failed-authentication-rate

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Protocol(<objectName.key.listener>).Thread(<objectName.key.networkProcessor>).NetworkProcessorFailedAuthenticationRate

KafkaNetworkProcessor

Количество активных соединений

JMX

kafka.server:type=socket-server-metrics,listener=<protocol>,networkProcessor=<thread_id> connection-count

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Protocol(<objectName.key.listener>).Thread(<objectName.key.networkProcessor>).NetworkProcessorConnectionCount

KafkaReplicationBytesInPerSec

Входящая скорость репликации

JMX

байт/с

kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesInPerSec

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").ReplicationBytesInPerSec

KafkaReplicationBytesOutPerSec

Исходящая скорость репликации

JMX

байт/с

kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesOutPerSec

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").ReplicationBytesOutPerSec

KafkaFailedProduceRequestsPerSec

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

JMX

tps

kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").FailedProduceRequestsPerSec

KafkaFailedFetchRequestsPerSec

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

JMX

tps

kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").FailedFetchRequestsPerSec

KafkaActiveControllerCount

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

JMX

kafka.controller:type=KafkaController,name=ActiveControllerCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).ActiveControllerCount

KafkaPreferredReplicaImbalanceCount

Количество партиций-лидеров, не являющихся предпочтительными (preferred)

JMX

шт

kafka.controller:type=KafkaController,name=PreferredReplicaImbalanceCount

В здоровом кластере эта метрика должна быть равна 0. Если она не 0, то требуется инициировать ребалансировку

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").PreferredReplicaImbalanceCount

KafkaActiveController

Является ли брокер контроллером

JMX

kafka.controller:type=KafkaController,name=ActiveControllerCount

Метрика равна 1 на брокере, который является контроллером, на остальных брокерах должна быть равна 0. Первая запущенная node в кластере Kafka становится контроллером. Контроллер кластера отвечает за ведение списка лидеров партиций и координацию смены лидера, если текущий лидер становится недоступным. Если возникает необходимость в смене контроллера, то Zookeeper в случайном порядке выбирает новый контроллер из списка брокеров

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").PreferredReplicaImbalanceCount

KafkaGlobalPartitionCount

Партиции брокера

JMX

шт

kafka.controller:type=KafkaController,name=GlobalPartitionCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").GlobalPartitionCount

KafkaOfflinePartitionsCount

Партиции Not available

JMX

шт

kafka.controller:type=KafkaController,name=OfflinePartitionsCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").OfflinePartitionsCount

KafkaUnderReplicatedPartitions

Партиции UnderReplicated

JMX

шт

kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").UnderReplicatedPartitions

KafkaFetchFollower

Запросы консьюмеров на получение новых данных

JMX

шт

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

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").FetchFollower_v<objectName.key.version>

KafkaFetchConsumer

Количество запросов от консьюмер на брокер на чтение

JMX

шт

kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchConsumer,version=*

metricName: Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").FetchConsumer_v<objectName.key.version>

KafkaProduce

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

JMX

шт

kafka.network:type=RequestMetrics,name=RequestsPerSec,request=Produce,version=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Produce_v<objectName.key.version>

KafkaRequestQueueSize

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

JMX

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

kafka.network:type=RequestChannel,name=RequestQueueSize

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").RequestQueueSize

KafkaTopicTotalFetchRequestsPerSecCount

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

JMX

шт

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

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).TotalFetchRequestsPerSecCount

KafkaTopicTotalFetchRequestsPerSecOneMinuteRate

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

JMX

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

tps

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

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).TotalFetchRequestsPerSecOneMinuteRate

KafkaTopicBytesInPerSecCount

Нагрузка на топик в b/s – сколько всего записано в topic

JMX

байт/с

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

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).BytesInPerSecCount

KafkaTopicBytesInPerSecOneMinuteRate

Нагрузка на топик в b/s – среднее за 1 минуту значение

JMX

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

байт/с

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

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).BytesInPerSecOneMinuteRate

KafkaTopicBytesOutPerSecCount

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

JMX

байт/с

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

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).BytesOutPerSecCount

KafkaTopicBytesOutPerSecOneMinuteRate

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

JMX

байт/с

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

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).BytesOutPerSecOneMinuteRate

KafkaTopicMessagesInPerSecCount

Количество сообщений, полученных топик в секунду (tps)

JMX

tps

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).MessagesInPerSecCount

KafkaTopicMessagesInPerSecOneMinuteRate

Количество сообщений, полученных топик в секунду. Считается по данными за последнюю минуту (tps)

JMX

tps

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Kafka.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Topic(<objectName.key.topic>).MessagesInPerSecOneMinuteRate

Метрики SEDR#

Метрика

Источник

Триггеры

Единица измерения

MBEAN Name

Комментарий

Путь в дереве метрик

Использование памяти

JMX

байт

java.lang:type=Memory

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").HeapMemoryUsage

Использование памяти

JMX

байт

java.lang:type=Memory

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").NonHeapMemoryUsage

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

JMX

kafka.consumer:type=consumer-fetch-manager-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Consumer.FetchRate

Общее число отправленных сообщений

JMX

шт

kafka.producer:type=producer-metrics,client-id=*

The total number of records output from the transformations and sent/put to this task belonging to the named sink connector in this worker, since the task was last restarted

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).RecordSendTotal

Общее число сообщений, отправленных с ошибкой

JMX

Не больше 0

шт

kafka.producer:type=producer-metrics,client-id=*

The number of record processing errors in this task

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).RecordErrorTotal

Средняя задержка запроса

JMX

мс

kafka.producer:type=producer-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).RequestLatencyAvg

Максимальная задержка запроса

JMX

мс

kafka.producer:type=producer-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).RequestLatencyMax

Максимальное отставание по количеству записей для любой партиции

JMX

шт

kafka.consumer:type=consumer-fetch-manager-metrics,client-id=*

Возрастающее значение - лучший показатель того, что группа консьюмеров не поспевает за продюсерами

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).RecordsLagMax

Среднее количество записей, читаемое консьюмером в секунду

JMX

tps

kafka.consumer:type=consumer-fetch-manager-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).RecordsConsumedRate

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

JMX

tps

kafka.consumer:type=consumer-fetch-manager-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).FetchRate

Среднее время, необходимое для получения запроса

JMX

мс

kafka.consumer:type=consumer-fetch-manager-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).FetchLatencyAvg

Количество партиций, назначенных консьюмеру

JMX

шт

kafka.consumer:type=consumer-coordinator-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Consumer.AssignedPartitions

Количество секунд с последнего heartbeat контролера

JMX

с

kafka.consumer:type=consumer-coordinator-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Consumer.LastHeartbeatSecondsAgo

Количество синхронизаций групп в секунду

JMX

шт

kafka.consumer:type=consumer-coordinator-metrics,client-id=*

Большие значения означают нестабильность группы

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Consumer.SyncRate

Количество присоединений к группе в секунду

JMX

шт

kafka.consumer:type=consumer-coordinator-metrics,client-id=*

Большое значение указывает на то, что группа консьюмеров нестабильна

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Consumer.JoinRate

Максимальное время, затрачиваемое на повторное присоединение к группе

JMX

kafka.consumer:type=consumer-coordinator-metrics,client-id=*

Это значение не должно быть намного больше, чем настроенный тайм-аут сессии консьюмера

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Consumer.JoinTimeMax

Средняя задержка запроса

JMX

мс

kafka.producer:type=producer-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Producer.RequestLatencyAvg

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

JMX

tps

kafka.producer:type=producer-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Producer.RequestRate

Среднее количество байтов, получаемых в секунду со всех серверов

JMX

байт/с

kafka.producer:type=producer-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).IncomingByteRate

Среднее количество исходящих байтов, отправляемых в секунду на все серверы

JMX

байт/с

kafka.producer:type=producer-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).OutgoingByteRate

Общее количество исходящих байтов, отправляемых на все серверы

JMX

байт/с

kafka.producer:type=producer-metrics,client-id=*

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).OutgoingByteTotal

Среднее количество байтов, получаемых в секунду по topic

JMX

байт/с

kafka.producer:type=producer-topic-metrics,client-id=,topic=

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Producer.Topic(<objectName.key.topic>).ByteRate

Среднее количество байтов, получаемых по topic

JMX

байт/с

kafka.producer:type=producer-topic-metrics,client-id=,topic=

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.client-id>).Producer.Topic(<objectName.key.topic>).ByteTotal

Количество коннекторов на воркере репликатора

JMX

Не должно уменьшаться

шт

kafka.connect:type=connect-worker-metrics

The number of connectors run in this worker

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").ConnectorCount

Количество коннекторов, стартовавших с ошибкой

JMX

Не больше 0

шт

kafka.connect:type=connect-worker-metrics

The total number of connector starts that failed

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").ConnectorStartupFailureTotal

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

JMX

шт

kafka.connect:type=connect-worker-metrics

The total number of connector starts that succeeded

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").ConnectorStartupSuccessTotal

Количество тасков на одном воркере

JMX

Не должно уменьшаться

шт

kafka.connect:type=connect-worker-metrics

The number of tasks run in this worker. Не должно стремиться к бесконечности, должно оставаться на одном уровне или стремиться к 0

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").TaskCount

Количество тасков с ошибками

JMX

Должно быть 0

шт

kafka.connect:type=connect-worker-metrics

The total number of task starts that failed

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").TaskStartupFailureTotal

Количество успешно запущенных тасков

JMX

шт

kafka.connect:type=connect-worker-metrics

The total number of task starts that succeeded

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").TaskStartupSuccessTotal

Время жизни воркера

JMX

Не должно уменьшаться

c

java.lang:type=Runtime

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").WorkerUptime

Количество destroyed тасков на коннекторе

JMX

Должно быть 0

шт

kafka.connect:type=connect-worker-metrics,connector=*

The number of destroyed tasks of the connector on the worker

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).ConnectorDestroyedTaskCount

Количество failed тасков на коннекторе

JMX

Должно быть 0

шт

kafka.connect:type=connect-worker-metrics,connector=*

The number of failed tasks of the connector on the worker

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).ConnectorFailedTaskCount

Количество paused тасков на коннекторе

JMX

Должно быть 0

шт

kafka.connect:type=connect-worker-metrics,connector=*

The number of paused tasks of the connector on the worker

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).ConnectorPausedTaskCount

Количество running тасков на коннекторе

JMX

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

шт

kafka.connect:type=connect-worker-metrics,connector=*

The number of running tasks of the connector on the worker. должно стремиться к общему количеству

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).ConnectorRunningTaskCount

Количество тасков на коннекторе

JMX

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

шт

kafka.connect:type=connect-worker-metrics,connector=*

The number of tasks of the connector on the worker. должно оставаться на одном уровне

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).ConnectorTotalTaskCount

Кол-во unassigned тасков на коннекторе

JMX

Должно быть 0

шт

kafka.connect:type=connect-worker-metrics,connector=*

The number of unassigned tasks of the connector on the worker

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).ConnectorUnassignedTaskCount

Имя лидера

JMX

Длинна должна быть > 0

kafka.connect:type=connect-worker-rebalance-metrics

The name of the group leader. Когда нет лидера, работа не выполняется

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").LeaderName

Выполняется ли сейчас балансировка

JMX

0

kafka.connect:type=connect-worker-rebalance-metrics

Whether this worker is currently rebalancing. При балансировке никакая работа не выполняется

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Host("<connector.host>:<connector.port>").Rebalancing

Тип коннектора

JMX

kafka.connect:type=connector-metrics,connector=*

The type of the connector. One of „source“ or „sink“

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).ConnectorType

Статус работы коннектора

JMX

Не равно «Running»

kafka.connect:type=connector-metrics,connector=*

The status of the connector. One of „unassigned“, „running“, „paused“, „failed“, or „destroyed“

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Status

Максимальное время, затрачиваемое таском для коммита смещения

JMX

Не больше 2000 миллисекунд

мс

kafka.connect:type=connector-task-metrics,connector=,task=

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).OffsetCommitMaxTimeMs

Процент успешно закомиченных смещений

JMX

Должен быть 100%

%

kafka.connect:type=connector-task-metrics,connector=,task=

The average percentage of this task’s offset commit attempts that succeeded

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).OffsetCommitSuccessPercentage

Процент времени, который таск провел в ожидании

JMX

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

%

kafka.connect:type=connector-task-metrics,connector=,task=

The fraction of time this task has spent in the pause state

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).PauseRatio

Процент времени, который таск провел в работе

JMX

Должен быть 100%

%

kafka.connect:type=connector-task-metrics,connector=,task=

The fraction of time this task has spent in the running state

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).RunningRatio

Статус работы коннектора

JMX

Не равно «Running»

kafka.connect:type=connector-task-metrics,connector=,task=

The status of the connector task. One of „unassigned“, „running“, „paused“, „failed“, or „destroyed“

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).Status

Число партиций topic, присвоенных таску

JMX

шт

kafka.connect:type=sink-task-metrics,connector=,task=

The number of topic partitions assigned to this task belonging to the named sink connector in this worker

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).PartitionCount

Число записей, прочитанных из Kafka, но незакомиченных

JMX

шт

kafka.connect:type=sink-task-metrics,connector=,task=

The number of records that have been read from Kafka but not yet completely committed/flushed/acknowledged by the sink task

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).SinkRecordActiveCount

Среднее количество tps, вычитываемое из Kafka этим таском

JMX

tps

kafka.connect:type=sink-task-metrics,connector=,task=

The average per-second number of records read from Kafka for this task belonging to the named sink connector in this worker. This is before transformations are applied

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).SinkRecordReadRate

Всего сообщений вычитано из Kafka таском с момента последнего рестарта

JMX

шт

kafka.connect:type=sink-task-metrics,connector=,task=

The total number of records read from Kafka by this task belonging to the named sink connector in this worker, since the task was last restarted

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).SinkRecordReadTotal

Среднее количество исходящих записей коннектора

JMX

tps

kafka.connect:type=sink-task-metrics,connector=,task=

The average per-second number of records output from the transformations and sent/put to this task belonging to the named sink connector in this worker. This is after transformations are applied and excludes any records filtered out by the transformations

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).SinkRecordSendRate

Всего исходящих записей коннектора

JMX

шт

kafka.connect:type=sink-task-metrics,connector=,task=

The total number of records output from the transformations and sent/put to this task belonging to the named sink connector in this worker, since the task was last restarted

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).SinkRecordSendTotal

Количество записей в очередь dead letter

JMX

Не больше 0

шт

kafka.connect:type=task-error-metrics,connector=,task=

The number of failed writes to the dead letter queue

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).DeadletterqueueProduceFailures

Количество попыток записей в очередь dead letter

JMX

шт

kafka.connect:type=task-error-metrics,connector=,task=

The number of attempted writes to the dead letter queue

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).DeadletterqueueProduceRequests

Время последней ошибки

JMX

kafka.connect:type=task-error-metrics,connector=,task=

The epoch timestamp when this task last encountered an error

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).LastErrorTimestamp

Всего ошибок на коннекторе

JMX

Не больше 0

шт

kafka.connect:type=task-error-metrics,connector=,task=

The number of errors that were logged

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).TotalErrorsLogged

Всего ошибок обработки записи

JMX

Не больше 0

шт

kafka.connect:type=task-error-metrics,connector=,task=

The number of record processing errors in this task

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).TotalRecordErrors

Всего сбоев в обработке записей

JMX

Не больше 0

шт

kafka.connect:type=task-error-metrics,connector=,task=

The number of record processing failures in this task

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).TotalRecordFailures

Всего записей пропущено из-за ошибок

JMX

Не больше 0

шт

kafka.connect:type=task-error-metrics,connector=,task=

The number of records skipped due to errors

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).TotalRecordsSkipped

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

JMX

Не больше 0

шт

kafka.connect:type=task-error-metrics,connector=,task=

The number of operations retried

Segment(${segment}).Federation(${federation}).Domain(${domain}).Replicator.Worker(${clusterName}).Connector(<objectName.key.connector>).Task(<objectName.key.task>).TotalRetries

Метрики SMBX#

Метрика

Источник

Триггеры

Единица измерения

MBEAN Name

Атрибут

Путь в дереве метрик

Время работы коллекции GarbageCollector

JMX

мс

java.lang:type=GarbageCollector,name=G1 Young Generation

CollectionTime

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").GarbageCollectorCollectionTime

Кол-во коллекций GarbageCollector

JMX

шт

java.lang:type=GarbageCollector,name=G1 Young Generation

CollectionCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").GarbageCollectorCollectionCount

Процент использования памяти брокером относительно global-max-size

JMX

0.7

%

org.apache.activemq.artemis:broker="<broker>"

AddressMemoryUsagePercentage

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").AddressMemoryUsagePercentage

Процент использования дискового пространства

JMX

0.7

%

org.apache.activemq.artemis:broker="<broker>"

DiskStoreUsage

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").DiskStoreUsage

Время жизни брокера

JMX

сек

org.apache.activemq.artemis:broker="<broker>"

UptimeMillis

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").UptimeMillis

Получено сообщений с момента запуска брокера

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

TotalMessagesAdded

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").TotalMessagesAdded

Получено сообщений с момента запуска брокера

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

TotalMessagesAcknowledged

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").TotalMessagesAcknowledged

Количество клиентов, подключенных к серверу

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

ConnectionCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").ConnectionCount

Количество сообщений во всех очередях брокера

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

TotalMessageCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").TotalMessageCount

Количество консьюмеров, потребляющих сообщения со всех очередей брокера

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

TotalConsumerCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").TotalConsumerCount

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

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

QueueCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").QueueCount

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

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

AddressCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").AddressCount

Состояние брокера, активный - true

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

Active

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Active

Количество сообщений в очереди

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

MessageCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue(<objectName.key.queue>).MessageCount

Количество сообщений, отправленных в очередь с момента ее создания

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

MessagesAdded

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue(<objectName.key.queue>).MessagesAdded

Количество сообщений, забранных из очереди с момента ее создания

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

MessagesAcknowledged

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue(<objectName.key.queue>).MessagesAcknowledged

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

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

ConsumerCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue(<objectName.key.queue>).ConsumerCount

Размер всех сообщений (включая постоянные и непродолжительные), находящихся в данный момент в этой очереди (включая запланированные, выгружаемые сообщения и сообщения в процессе доставки)

JMX

Мб

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

PersistentSize

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue(<objectName.key.queue>).PersistentSize

Процент загруженности адреса

JMX

%

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>"

AddressLimitPercent

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>").Address(<objectName.key.address>).AddressLimitPercent

Количество предполагаемых байт, используемых всеми очередями, привязанными к данному адресу

JMX

Мб

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>"

AddressSize

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>").Address(<objectName.key.address>).AddressSize

Количество сообщений, находящихся в данный момент во всех очередях, привязанных к этому адресу

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>"

MessageCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>").Address(<objectName.key.address>).MessageCount

Сумма сообщений в очереди (очередях), включая сообщения, находящиеся в доставке

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>"

NumberOfMessages

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>").Address(<objectName.key.address>).NumberOfMessages

Глобальный максимальный предел для сообщений

JMX

Мб

org.apache.activemq.artemis:broker="<broker>"

GlobalMaxSize

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").GlobalMaxSize

Количество клиентов, которые подключились к этому серверу с момента его запуска

JMX

шт

org.apache.activemq.artemis:broker="<broker>"

TotalConnectionCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").TotalConnectionCount

Память, используемая всеми адресами брокера для сообщений, хранящихся в памяти

JMX

Мб

org.apache.activemq.artemis:broker="<broker>"

AddressMemoryUsage

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").AddressMemoryUsage

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

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>"

UnRoutedMessageCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>").Address(<objectName.key.address>).UnRoutedMessageCount

Является ли этот адрес подкачивающим (да - „1“, нет - „0“)

JMX

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>"

Paging

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>").Address(<objectName.key.address>).Paging

Количество сообщений, которые эта очередь в данный момент доставляет своим консьюмерам

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

DeliveringCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue.<objectName.key.routing-type>(<objectName.key.queue>).DeliveringCount

Количество сообщений, срок действия которых истек из этой очереди с момента ее создания

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

MessagesExpired

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue.<objectName.key.routing-type>(<objectName.key.queue>).MessagesExpired

Количество сообщений, удаленных из этой очереди с момента ее создания из-за превышения максимального количества попыток доставки

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

MessagesKilled

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue.<objectName.key.routing-type>(<objectName.key.queue>).MessagesKilled

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

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

ScheduledCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue.<objectName.key.routing-type>(<objectName.key.queue>).ScheduledCount

Постоянный размер запланированных сообщений в этой очереди

JMX

Мб

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

ScheduledSize

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue.<objectName.key.routing-type>(<objectName.key.queue>).ScheduledSize

Количество страниц, используемых этим адресом

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

NumberOfPages

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue.<objectName.key.routing-type>(<objectName.key.queue>).NumberOfPages

Количество направляемых сообщений

JMX

шт

org.apache.activemq.artemis:broker="<broker>",component=addresses,address="<queue>",subcomponent=queues,routing-type=\"anycast\",queue="<queue>"

RoutedMessageCount

Segment(${segment}).Federation(${federation}).Domain(${domain}).Artemis.Cluster(${clusterName}).Broker("<connector.host>:<connector.port>").Address(<objectName.key.address>).Queue.<objectName.key.routing-type>(<objectName.key.queue>).RoutedMessageCount

Метрики etcd#

Метрика

Источник

Триггер

Единица измерения

Tип

Комментарии

Путь в дереве метрик

Совокупный физический размер хранилища данных в Мб

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_debugging_mvcc_db_total_size_in_bytes

Общее количество compacted ключей БД

Prometheus

шт

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_debugging_mvcc_db_compaction_keys_total

Общее количество ключей

Prometheus

шт

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_debugging_mvcc_keys_total

Количество активных в настоящее время наблюдателей

Prometheus

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

шт

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_debugging_store_watchers

Латенси fsync, вызываемое WAL

Prometheus

Должно быть меньше 5 сек

шт

summary

Большие задержки при работе с диском часто указывают на проблемы с диском. Это может привести к большой задержке обработки запросов или сделать кластер нестабильным

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_disk_wal_fsync_duration_seconds~_sum~

Количество вызовов fsync, вызываемое WAL

Prometheus

шт

counter

Большие задержки при работе с диском часто указывают на проблемы с диском. Это может привести к большой задержке обработки запросов или сделать кластер нестабильным

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_disk_wal_fsync_duration_seconds~_count~

Латенси коммитов, вызываемых серверной частью

Prometheus

Должно быть меньше 5 сек

summary

Большие задержки при работе с диском часто указывают на проблемы с диском. Это может привести к большой задержке обработки запросов или сделать кластер нестабильным

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_disk_backend_commit_duration_seconds~_sum~

Количество коммитов, вызываемых серверной частью

Prometheus

шт

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_disk_backend_commit_duration_seconds~_count~

Общее количество Мб, записанных в WAL

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_disk_wal_write_bytes_total

Общее количество кешированных keys/ranges

Prometheus

шт

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_grpc_proxy_cache_keys_total

Общий размер базы данных, физически выделенной в Мб

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_mvcc_db_total_size_in_bytes

Общий размер используемой базы данных в Мб

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_mvcc_db_total_size_in_use_in_bytes

Общее количество Мб полученных от grpc клиентов

Prometheus

Мб

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_network_client_grpc_received_bytes_total

Общее количество Мб отправленных grpc клиентам

Prometheus

Мб

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_network_client_grpc_sent_bytes_total

Общее количество клиентских запросов на версию клиента

Prometheus

шт

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_client_requests_total

Есть ли лидер или нет: 1 - существует, 0 - нет

Prometheus

Должно быть =1

gauge

Указывает, есть ли у участника лидер. Если у участника нет лидера, он полностью недоступен. Если у всех участников в кластере нет лидера, весь кластер полностью недоступен

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_has_leader

Общее количество неудачных health checks

Prometheus

Не должно расти

шт

counter

Чем меньше, тем лучше

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_health_failures

Общее количество удачных health checks

Prometheus

шт

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_health_success

Общее число ошибок heartbeat лидера (вероятно перегружено из-за медленного диска)

Prometheus

Не должно расти

шт

counter

Чем меньше, тем лучше

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_heartbeat_send_failures_total

ID сервера или участника (member) в 16-ричном формате

Prometheus

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_id

Является ли данный участник лидером: 1 - да, 0 - нет

Prometheus

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_is_leader

Является ли данный участник learner: 1 - да, 0 - нет

Prometheus

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_is_learner

Количество замеченных смен лидеров

Prometheus

Не должно расти, иначе предупреждение

раз

counter

Подсчитывает количество изменений лидера, которые участник (member) видел с момента запуска. Частая смена лидера существенно влияет на производительность etcd. Это также сигнализирует о нестабильности лидера, возможно, из-за проблем с сетевым подключением или чрезмерной нагрузки на кластер etcd

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_proposals_applied_total

Общее количество примененных консенсусных предложений

Prometheus

раз

gauge

Сервер etcd применяет каждое зафиксированное предложение асинхронно. Разница между proposals_committed_total и proposals_applied_total обычно должна быть небольшой (в пределах нескольких тысяч даже при высокой нагрузке). Если разница между ними продолжает расти, это означает, что сервер etcd перегружен. Это может произойти при применении дорогостоящих запросов, таких как запросы с большим диапазоном или большие операции txn

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_proposals_applied_total

Общее количество одобренных консенсусных предложений

Prometheus

Не должно падать

раз

gauge

Этот показатель должен со временем увеличиваться, если кластер исправен. Несколько здоровых участников кластера etcd могут иметь одновременно разные суммарные зафиксированные предложения. Это несоответствие может быть связано с восстановлением после старта, отставанием от лидера или тем, что он является лидером и, следовательно, имеет наибольшее количество коммитов. Важно отслеживать эту метрику для всех участников кластера; неизменно большое отставание между отдельным участником и его лидером указывает на то, что участник работает медленно или нездорово

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_proposals_committed_total

Общее количество неудавшихся предложений

Prometheus

Не должно расти

шт

counter

Обычно связаны с двумя проблемами: временные сбои, связанные с выборами лидера, или более длительные простои, вызванные потерей кворума в кластере

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_proposals_failed_total

Текущее количество обрабатываемых предложений для фиксации. Указывает сколько предложений поставлено в очередь для фиксации

Prometheus

шт

gauge

Рост количества ожидающих предложений предполагает, что существует большая клиентская нагрузка или участник не может принять предложения

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_proposals_pending

Текущий размер квоты внутреннего хранилища в Мб

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_quota_backend_bytes

Общее количество просмотренных индексов с ошибкой чтения

Prometheus

Не должно расти

шт

counter

Чем меньше, тем лучше

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_read_indexes_failed_total

Общее количество медленных запросов на применение (вероятно перегруженных из-за медленного диска)

Prometheus

шт

counter

Чем меньше, тем лучше

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_slow_apply_total

Общее количество ожидающих чтения индексов не синхронизированных с ведущими или просроченными запросами индекса чтения

Prometheus

шт

counter

Чем меньше, тем лучше

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_slow_read_indexes_total

1 - сервер применяет снепшот, 0 - нет

Prometheus

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_server_snapshot_apply_in_progress_total

Задержка распространения файла fsyncing_snap_db

Prometheus

Не должно быть больше 600 сек

с

summary

Слишком большая продолжительность snapshot указывает на проблемы с диском и может привести к нестабильности кластера

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_snap_db_fsync_duration_seconds~_sum~

Количество снепшот

Prometheus

шт

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_snap_db_fsync_duration_seconds~_count~

Задержка распространения snapshot v3

Prometheus

Не должно быть больше 600 сек

с

summary

Слишком большая продолжительность snapshot указывает на проблемы с диском и может привести к нестабильности кластера

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_snap_db_save_total_duration_seconds~_sum~

Количество снепшот v3

Prometheus

шт

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_snap_db_save_total_duration_seconds~_count~

Задержка распространения fsync, вызванная snapshot

Prometheus

Не должно быть больше 600 сек

c

summary

Слишком большая продолжительность snapshot указывает на проблемы с диском и может привести к нестабильности кластера

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_snap_fsync_duration_seconds~_sum~

Количество fsync вызванное snapshot

Prometheus

шт

counter

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").etcd_snap_fsync_duration_seconds~_count~

Количество Мб, полученных от системы

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").go_memstats_sys_bytes

Общее время, затраченное пользователем и системным процессором в секундах

Prometheus

Должно расти

c

counter

Должно расти

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").process_cpu_seconds_total

Максимальное количество открытых дескриптеров файлов

Prometheus

шт

gauge

Если process_open_fds приближается к process_max_fds, то это указывает на потенциальную проблему исчерпания файлового дескриптора. Если файловые дескрипторы исчерпаны, в etcd могут начаться проблемы, потому что он не сможет создать новые файлы WAL

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").process_max_fds

Количество открытых дескриптеров файлов

Prometheus

шт

gauge

Если process_open_fds приближается к process_max_fds, то это указывает на потенциальную проблему исчерпания файлового дескриптора. Если файловые дескрипторы исчерпаны, в etcd могут начаться проблемы, потому что он не сможет создать новые файлы WAL

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").process_open_fds

Размер резидентной памяти в Мб

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").process_resident_memory_bytes

Время начала процесса с эпохи unix в секундах

Prometheus

Должно расти

с

gauge

Должно расти

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").process_start_time_seconds

Размер виртуальной памяти в Мб

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").process_virtual_memory_bytes

Максимальный объем доступной виртуальной памяти в Мб

Prometheus

Мб

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").process_virtual_memory_max_bytes

Текущее количество обслуживаемых запросов

Prometheus

шт

gauge

Segment(${segment}).Federation(${federation}).Domain(${domain}).Etcd.Cluster(${clusterName}).Member("<connector.host>:<connector.port>").promhttp_metric_handler_requests_in_flight

Метрики EVTA#

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

Описание

Метрика

MBEAN Name

Путь в дереве метрик

EVTA

Количество перезапусков EVTA

EvtaRetryCount

reactive.stream.adapter:name=retry,type=meters count

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").RetryCount

EVTA

Количество остановок EVTA вследствие ошибки

EvtaFailureCount

reactive.stream.adapter:name=failure,type=meters count

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").FailureCount

Producer

Количество успешно отправленных сообщений

EvtaProducerSendMessageSuccess

reactive.stream.adapter:name=producerSendMessageSuccess,type=meters OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.SendMessageSuccessOneMinuteRate

Producer

Количество успешно отправленных сообщений

EvtaProducerSendMessageSuccess

reactive.stream.adapter:name=producerSendMessageSuccess,type=meters count

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.SendMessageSuccessCount

Producer

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

EvtaProducerSendMessageErrorCount

reactive.stream.adapter:name=producerSendMessageError,type=meters count

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.SendMessageErrorCount

Producer

Время обработки сообщения при отправке

EvtaProducerMessageProcessTime

reactive.stream.adapter:name=messageProcessTime,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.MessageProcessTimeOneMinuteRate

Producer

Среднее время обработки сообщения при отправке

EvtaProducerMessageProcessTime

reactive.stream.adapter:name=messageProcessTime,type=timers Mean

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.MessageProcessTimeMean

Producer

Время получения подтверждения отправки сообщения

EvtaProducerMessageAcknowledgeTime

reactive.stream.adapter:name=messageAcknowledgeTime,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.MessageAcknowledgeTimeOneMinuteRate

Producer

Среднее время получения подтверждения отправки сообщения

EvtaProducerMessageAcknowledgeTime

reactive.stream.adapter:name=messageAcknowledgeTime,type=timers Mean

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.MessageAcknowledgeTimeMean

Consumer

Количество полученных сообщений

EvtaConsumerReceiveMessages

reactive.stream.adapter:name=messageAcknowledgeTime,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.ReceiveMessagesOneMinuteRate

Consumer

Количество полученных сообщений

EvtaConsumerReceiveMessages

reactive.stream.adapter:name=messageAcknowledgeTime,type=timers Count

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.ReceiveMessagesCount

Consumer

Количество ошибок при приеме сообщений

EvtaConsumerErrorsCount

reactive.stream.adapter:name=consumerErrors,type=meters count

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.ErrorsCount

Consumer

Время обработки пачки принятых сообщений

EvtaConsumerProcessBatch

reactive.stream.adapter:name=consumerProcessBatch,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.ProcessBatchOneMinuteRate

Consumer

Среднее время обработки пачки принятых сообщений

EvtaConsumerProcessBatch

reactive.stream.adapter:name=consumerProcessBatch,type=timers Mean

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.ProcessBatchMean

Consumer

Время между приемом сообщений и началом их отправки

EvtaConsumerWaitDeliver

reactive.stream.adapter:name=consumerWaitDeliver,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.WaitDeliverOneMinuteRate

Consumer

Среднее время между приемом сообщений и началом их отправки

EvtaConsumerWaitDeliver

reactive.stream.adapter:name=consumerWaitDeliver,type=timers Mean

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.WaitDeliverMean

Consumer

Размер используемого буфера при вычитке из EVTD /SMBX /IBM MQ

EvtaConsumerBufferSize

reactive.stream.adapter:name=consumerBufferSize,type=gauges Value

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.BufferSize

Producer

Количество успешно отправленных сообщений через gRPC/REST

EvtaEgressProducerSendMessageSuccess

reactive.stream.adapter:name=egressProducerSendMessageSuccess,type=meters OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.egressProducerSendMessageSuccessOneMinuteRate

Producer

Количество сообщений, отправка которых завершилась с ошибкой через gRPC/REST

EvtaEgressProducerSendMessageError

reactive.stream.adapter:name=egressProducerSendMessageError,type=meters OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.egressProducerSendMessageErrorOneMinuteRate

Producer

Время обработки сообщения при отправке через gRPC/REST

EvtaEgressMessageProcessTime

reactive.stream.adapter:name=egressMessageProcessTime,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.egressMessageProcessTimeOneMinuteRate

Producer

Время получения подтверждения отправки сообщения через gRPC/REST

EvtaEgressMessageAcknowledgeTime

reactive.stream.adapter:name=egressMessageAcknowledgeTime,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.egressMessageAcknowledgeTimeOneMinuteRate

Producer

Среднее время обработки сообщения при отправке через gRPC/REST

EvtaEgressMeanMessageProcessTime

reactive.stream.adapter:name=egressMeanMessageProcessTime,type=gauges Value

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.egressMeanMessageProcessTime

Producer

Среднее время получения подтверждения отправки сообщения через gRPC/REST

EvtaEgressMeanMessageAcknowledgeTime

reactive.stream.adapter:name=egressMeanMessageAcknowledgeTime,type=gauges Value

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Producer.egressMeanMessageAcknowledgeTime

Consumer

Количество полученных сообщений, прошедших через gRPC/REST

EvtaEgressConsumerReceiveMessagesOneMinuteRate

reactive.stream.adapter:name=egressConsumerReceiveMessages,type=meters OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.egressConsumerReceiveMessagesOneMinuteRate

Consumer

Количество ошибок при приеме сообщений через gRPC/REST

EvtaEgressConsumerErrorsOneMinuteRate

reactive.stream.adapter:name=egressConsumerErrors,type=meters OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.egressConsumerErrorsOneMinuteRate

Consumer

Время обработки пачки принятых сообщений через gRPC/REST

EvtaEgressConsumerProcessBatch

reactive.stream.adapter:name=egressConsumerProcessBatch,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.egressConsumerProcessBatchOneMinuteRate

Consumer

Среднее время обработки пачки принятых сообщений через gRPC/REST

EvtaEgressConsumerProcessBatch

reactive.stream.adapter:name=egressConsumerProcessBatch,type=timers Mean

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.egressConsumerProcessBatchMean

Consumer

Время между приемом сообщений и началом их отправки через gRPC/REST

EvtaEgressConsumerWaitDeliver

reactive.stream.adapter:name=egressConsumerWaitDeliver,type=timers OneMinuteRate

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.egressConsumerWaitDeliverOneMinuteRate

Consumer

Среднее время между приемом сообщений и началом их отправки через gRPC/REST

EvtaEgressConsumerWaitDeliver

reactive.stream.adapter:name=egressConsumerWaitDeliver,type=timers Mean

Segment(${segment}).Federation(${federation}).Domain(${domain}).EVTA.Host("<connector.host>:<connector.port>").Consumer.egressConsumerWaitDeliver

Общие метрики EDMN и Коллекторов#

Категория

Метрика

Описание

Источник

Единица измерения

MBEAN Name

Путь в дереве метрик для EDMN

Путь в дереве метрик для коллектора

CPU

ProcessCpuLoad

Процент загрузки ЦП процессом коллектора/мониторинга

JMX

Мб

java.lang:type=OperatingSystem

EDMN.Monitoring(host:port).ProcessCpLoad

EDMN.Collector(collectorId).ProcessCpLoad

CPU

CpuLoad

Общий процент загрузки ЦП хоста, на котором развернут коллектор/Мониторинг

JMX

Мб

java.lang:type=OperatingSystem

EDMN.Monitoring(host:port).CpLoad

EDMN.Collector(collectorId).CpLoad

OS

SystemCpuLoad

Коэффициент для оценки текущего использования процессора

JMX

java.lang:type=OperatingSystem

EDMN.Monitoring(host:port).SystemCpuLoad

EDMN.Collector(collectorId).SystemCpuLoad

OS

SystemLoadAverage

Коэффициент для оценки общей загруженности системы, включая ожидание выполнения процессов CPU, дисковых и других процессов

JMX

java.lang:type=OperatingSystem

EDMN.Monitoring(host:port).SystemLoadAverage

EDMN.Collector(collectorId).SystemLoadAverage

Threads

PeakThreadCount

Пиковое количество потоков, которые существовали с момента старта JVM

JMX

шт

java.lang:type=Threading

EDMN.Monitoring(host:port).PeakThreadCount

EDMN.Collector(collectorId).PeakThreadCount

Threads

DaemonThreadCount

Текущее количество фоновых потоков

JMX

шт

java.lang:type=Threading

EDMN.Monitoring(host:port).DaemonThreadCount

EDMN.Collector(collectorId).DaemonThreadCount

Threads

ThreadCount

Текущее общее количество потоков, включая фоновые

JMX

шт

java.lang:type=Threading

EDMN.Monitoring(host:port).ThreadCount

EDMN.Collector(collectorId).ThreadCount

Threads

TotalStartedThreadCount

Общее количество запущенных потоков с момента старта JVM

JMX

шт

java.lang:type=Threading

EDMN.Monitoring(host:port).TotalStartedThreadCount

EDMN.Collector(collectorId).TotalStartedThreadCount

Heap

HeapMemoryUsageCommited

Количество памяти, выделенной для кучи в данный момент

JMX

Мб

java.lang:type=Memory

EDMN.Monitoring(host:port).HeapMemoryUsageCommited

EDMN.Collector(collectorId).HeapMemoryUsageCommited

Heap

HeapMemoryUsageInit

Размер области памяти, выделенной для кучи при инициализации JVM

JMX

Мб

java.lang:type=Memory

EDMN.Monitoring(host:port).HeapMemoryUsageInit

EDMN.Collector(collectorId).HeapMemoryUsageInit

Heap

HeapMemoryUsageUsed

Объем памяти, фактически используемый объектами приложения

JMX

Мб

java.lang:type=Memory

EDMN.Monitoring(host:port).HeapMemoryUsageUsed

EDMN.Collector(collectorId).HeapMemoryUsageUsed

Heap

NonHeapMemoryUsageCommited

Объем памяти, выделенной JVM в non-heap области

JMX

Мб

java.lang:type=Memory

EDMN.Monitoring(host:port).NonHeapMemoryUsageCommited

EDMN.Collector(collectorId).NonHeapMemoryUsageCommited

Heap

NonHeapMemoryUsageUsed

Объем памяти, используемый JVM в non-heap области

JMX

Мб

java.lang:type=Memory

EDMN.Monitoring(host:port).NonHeapMemoryUsageUsed

EDMN.Collector(collectorId).NonHeapMemoryUsageUsed

Heap

HeapMemoryUsagePercentage

Процент использования памяти кучи

JMX

%

java.lang:type=Memory

EDMN.Monitoring(host:port).HeapMemoryUsagePercentage

EDMN.Collector(collectorId).HeapMemoryUsagePercentage

Memory

FreePhysicalMemorySize

Размер свободной оперативной памяти хоста

JMX

Мб

java.lang:type=OperatingSystem

EDMN.Monitoring(host:port).FreePhysicalMemorySize

EDMN.Collector(collectorId).FreePhysicalMemorySize

Memory

TotalPhysicalMemorySize

Общий размер оперативной памяти хоста

JMX

Мб

java.lang:type=OperatingSystem

EDMN.Monitoring(host:port).TotalPhysicalMemorySize

EDMN.Collector(collectorId).TotalPhysicalMemorySize

Memory

PhysicalMemeoryUsagePersentage

Процент использования оперативной памяти приложением

JMX

%

java.lang:type=OperatingSystem

EDMN.Monitoring(host:port).PhysicalMemoryUsagePercentage

EDMN.Collector(collectorId).TotalPhysicalMemorySize

Метрики EDMN#

Метрика

Описание

Источник

Единица измерения

MBEAN Name

Путь в дереве метрик

MonitoringUptime

Время жизни мониторинга

JMX

мс

java.lang:type=Runtime Uptime

LivenessProbe.Monitoring("<connector.host>:<connector.port>").Uptime

Метрики Коллекторов#

Метрика

Описание

Единица измерения

MBEAN Name

Путь в дереве метрик

IsAlive

Liveness-проба Коллектора (значение должно изменяться)

ru.sbt.fpss.monitoring.collector.component.input.ConfigInput

LivenessProbe.Collector(${collectorName}).IsAlive

Uptime

Liveness-проба Коллектора (uptime с момента старта в мс)

мс

ru.sbt.fpss.monitoring.collector.component.input.ConfigInput

LivenessProbe.Collector(${collectorName}).Uptime

Counter

Liveness-проба Коллектора (счетчик с накопительным итогом)

ru.sbt.fpss.monitoring.collector.component.input.ConfigInput

LivenessProbe.Collector(${collectorName}).Counter

JvmUpime

Время с момента запуска JVM

c

java.lang:type=Runtime

EDMN.Collector(collectorId).JvmUptime

NumberOfInputMetrics

Количество получаемых метрик

шт

ru.sbt.fpss.monitoring.collector:name=INPUT.*

EDMN.Collector(collectorId).NumberOfInputMetrics

NumberOfOutputMetrics

Количество отдаваемых метрик

шт

ru.sbt.fpss.monitoring.collector:name=OUTPUT.*

EDMN.Collector(collectorId).NumberOfOutputMetrics

TotalNumberOfInputMetrics

Общее количество получаемых метрик

шт

ru.sbt.fpss.monitoring.collector:name=INPUT.TOTAL*

EDMN.Collector(collectorId).TotalNumberOfInputMetrics

TotalNumberOfOutputMetrics

Общее количество отдаваемых метрик

шт

ru.sbt.fpss.monitoring.collector:name=OUTPUT.TOTAL*

EDMN.Collector(collectorId).TotalNumberOfOutputMetrics

Метрики Prometheus#

Для получения метрик Prometheus, используется HttpInput в EDMN-коллекторе. Метрики Prometheus собираются с помощью REST - запроса GET /metrics.

Метрика

Описание

Единица измерения

Путь в дереве метрик

go_memstats_sys_bytes

Количество байт, полученных из системы

байт

EDMN.Prometheus(host:port).go_memstats_sys_bytes

process_cpu_seconds_total

Общее время, затраченное пользователем и системным процессором в секундах

сек

EDMN.Prometheus(host:port).process_cpu_seconds_total

process_max_fds

Максимальное количество открытых файловых дескрипторов

шт

EDMN.Prometheus(host:port).process_max_fds

process_open_fds

Количество открытых файловых дескрипторов

шт

EDMN.Prometheus(host:port).process_open_fds

process_resident_memory_bytes

Объем физической памяти, занятой процессом

байт

EDMN.Prometheus(host:port).process_resident_memory_bytes

process_start_time_seconds

Количество времени с момента старта процесса в секундах

сек

EDMN.Prometheus(host:port).process_start_time_seconds

process_virtual_memory_bytes

Количество виртуальной памяти, занятой процессом

байт

EDMN.Prometheus(host:port).process_virtual_memory_bytes

process_virtual_memory_max_bytes

Максимальное количество виртуальной памяти, занятой процессом

байт

EDMN.Prometheus(host:port).process_virtual_memory_max_bytes

promhttp_metric_handler_requests_in_flight

Текущее количество сканирований метрик

шт

EDMN.Prometheus(host:port).promhttp_metric_handler_requests_in_flight