Мониторинг#

Настройка#

Настройки мониторинга для каждого компонента описаны подробнее в разделах:

Метрики#

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

1. Отслеживаемые метрики компонента EDMN#

Отслеживаемые метрики для компонента EDMN описаны подробнее в разделе Мониторинг EDMN.

Метрики EDMN#

Название

Описание

Источник

Размерность

MBEAN Name

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

Основные атрибуты

MonitoringUptime

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

JMX

мс

java.lang:type=Runtime Uptime

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

-

CpuLoad

Загрузка CPU процессом Мониторинга

JMX

%

java.lang:type=OperatingSystem

EDMN.Monitoring("<connector.host>:<connector.port>")

-

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

Название

Описание

Размерность

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

-

2. Отслеживаемые метрики компонента EMIP#

Отслеживаемые метрики для компонента EMIP описаны подробнее в разделе Мониторинг EMIP.

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

Название

Описание

Размерность

Основные атрибуты

CPU usage

Показатель, отражающий процент загрузки центрального процессора (CPU) системой и запущенными приложениями в определенный промежуток времени. Этот показатель помогает оценить уровень нагрузки на процессор компьютера или сервера

m

-

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

Название

Описание

Размерность

Основные атрибуты

Memory usage

Метрика, показывающая объем оперативной памяти (RAM), занятой активными приложениями, операционными системами и различными сервисами в настоящий момент времени. Она позволяет отслеживать состояние доступной физической памяти и косвенно оценивает нагрузку на систему

MiB

-

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

Название

Описание

Размерность

Основные атрибуты

Network in

Показатель объема данных, поступающих на устройство (сервер, компьютер, маршрутизатор) через сетевую инфраструктуру за определенный период времени. Эта метрика важна для оценки нагрузки на сетевые интерфейсы и понимания текущего состояния каналов связи

Bps

-

Network out

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

KBps

-

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

Название

Описание

Размерность

Основные атрибуты

Filesystem

Показатель, связанный с использованием файловых систем, которые используются для мониторинга их состояния и производительности

KiB

-

3. Отслеживаемые метрики компонента EVPC#

Отслеживаемые метрики для компонента EVPC описаны подробнее в разделе Мониторинг EVPC.

Группа метрик потока трансформации событий#

Название

Описание

Размерность

Основные атрибуты

transform.input

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

шт

-

transform.input

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

шт

-

transform.reject

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

шт

-

transform.error

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

шт

-

branch-branchStep

Количество событий, переданных в побочную ветку обработки с первым шагом branchStep

шт

-

name

Пользовательская метрика из DSL (подробнее описано в документе Руководство пользователя EVPC, раздел «Работа с метриками»)

шт

-

transform.latency

Время прохождения сообщения

мс

-

При возможности отслеживания метрик через JMX для времени прохождения используйте метрику transform.latency (атрибут mean).

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

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

Название

Описание

Размерность

Основные атрибуты

system_cpu_usage

Представляет собой показатель «недавнего использования CPU» (центрального процессора) системы, на которой работает приложение. Измеряет процентный объем времени, в течение которого CPU был задействован для выполнения задач за определенный период времени.
Интерпретация:
- 0%: CPU в данный момент не используется (что может быть нормальным состоянием для системы со слабыми нагрузками);
- 10%-20%: небольшая нагрузка, система работает эффективно, без перегрузок;
- 50%-70%: умеренная нагрузка. Возможно, необходимо следить за состоянием, чтобы избежать перегрузки;
- 80%-100%: высокая загрузка CPU. Система может испытывать задержки, и производительность может ухудшаться.

-

-

process_cpu_usage

Измеряет недавнее использование CPU конкретно для процесса Java Virtual Machine (JVM).
Интерпретация:
- 0%: JVM не использует CPU (возможно, приложение в состоянии ожидания);
- 10%-20%: низкое использование CPU, приложение работает эффективно;
- 50%-70%: умеренная нагрузка, стоит следить за производительностью;
- 80%-100%: высокая загрузка, что может указывать на задержки в работе.

-

-

process_start_time_seconds

Метрика фиксирует время запуска процесса в секундах с начала эпохи Unix (1 января 1970 года). Она указывает на момент, когда приложение или служба были запущены.

с

-

process_uptime_seconds

Метрика отслеживает общее время работы процесса в секундах с момента его запуска. Она показывает, как долго приложение функционирует без перезапуска.

с

-

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

Название

Описание

Размерность

Основные атрибуты

system_load_average_1m

Отражает среднюю загрузку системы за одну минуту. Она учитывает количество процессов, которые находятся в состоянии ожидания выполнения (runnable) на доступных процессорах, а также те процессы, которые в данный момент выполняются.
Интерпретация:
- 0: система не имеет активных процессов;
- 1.0: уровень нагрузки соответствует количеству доступных процессоров (система работает на пределе своих возможностей);
- Больше 1.0: указывает на перегрузку системы, где количество процессов превышает доступные ресурсы:
- Менее 1.0: указывает на то, что система имеет доступные ресурсы и не загружена.

-

-

system_cpu_count

Определяет количество доступных процессоров (или логических ядер) в системе. Используется для оценки вычислительных ресурсов, доступных для выполнения задач. Оценка system_load_average_1m в контексте system_cpu_count помогает понять, насколько эффективно система использует доступные ресурсы.

-

-

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

Название

Описание

Размерность

Основные атрибуты

jvm_threads_live_threads

Метрика показывает текущее количество живых потоков в Java Virtual Machine (JVM), включая как обычные (non-daemon), так и демон (daemon) потоки. Метрика подсчитывает количество потоков, которые активно функционируют в JVM в данный момент.

шт

-

jvm_threads_daemon_threads

Метрика показывает текущее количество живых демон потоков в системе. Демон потоки — это потоки, которые работают в фоновом режиме и не препятствуют завершению JVM, когда все не демон потоки завершены.

шт

-

jvm_threads_peak_threads

Метрика отражает максимальное количество живых потоков в JVM с момента запуска или с момента сброса максимального значения. При каждом создании нового потока JVM сравнивает текущий счетчик с предыдущим максимальным значением и обновляет его при необходимости.
Интерпретация:
- помогает понять, насколько высока была нагрузка на потоки в течение жизни приложения;
- наличие очень высокого пика может указывать на потенциальные проблемы, такие как чрезмерное создание потоков, что может привести к утечкам ресурсов.

шт

-

process_threads

Метрика показывает общее количество потоков, работающих в рамках конкретного процесса на уровне ОС, включая все потоки, запущенные приложением.

шт

-

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

Название

Описание

Размерность

Основные атрибуты

jvm_threads_states_threads{state=»»}

Метрика отображает текущее количество потоков в Java Virtual Machine (JVM) с учетом их состояний. Это значение позволяет детализировать информацию о количестве потоков, находящихся в различных состояниях, таких как «RUNNABLE», «BLOCKED», «WAITING», «TIMED-WAITING», «NEW», «TERMINATED».
Состояния потоков state:
- RUNNABLE: Потоки, которые готовы к выполнению и могут быть запущены процессором. Это активные потоки, которые ожидают возможности использования процессора;
- BLOCKED: Потоки, которые заблокированы и ждут освобождения монитора, то есть они не могут продолжить свою работу, пока другой поток не освободит ресурс, к которому они пытаются получить доступ;
- WAITING: Потоки, которые временно остановлены и ожидают, когда другой поток уведомит их о продолжении выполнения. Это может произойти по вызову методов, таких как Object.wait();
- TIMED-WAITING: Потоки, которые находятся в состоянии ожидания с тайм-аутом. Они могут находиться в этом состоянии, если вызывается метод, такой как Thread.sleep(millis) или Object.wait(millis), определяющий время ожидания;
- NEW: Потоки, которые были созданы, но еще не были запущены. Эти потоки находятся в состоянии «новый» и ожидают, когда их метод start() будет вызван;
- TERMINATED: Потоки, которые завершили свою работу. После завершения потока его состояние меняется на «TERMINATED», и этот поток не может быть запущен повторно.

-

-

Группа метрик «JVM Heap/Non-Heap»#

Название

Описание

Размерность

Основные атрибуты

jvm_memory_used_bytes{area=»»,id=»»}

Метрика показывает количество байт памяти, которые в данный момент используются в конкретной области памяти JVM. Она позволяет оценить текущую нагрузку на память. Высокие значения могут указывать на интенсивное использование памяти и потенциальные узкие места, такие как утечки памяти.

-

-

jvm_memory_committed_bytes{area=»»,id=»»}

Метрика указывает на количество байт памяти, которое было выделено и зафиксировано для использования JVM. Это значение всегда больше или равно количеству используемой памяти.
Интерпретация:
- Выделенное пространство: Если значение высоко, но jvm_memory_used_bytes низкое, это может указывать на неэффективное использование памяти или на период ожидания большой активности.
- Контекст: выделение памяти для хранения неосвобожденных объектов может оказать влияние на производительность приложения.

-

-

jvm_memory_max_bytes{area=»»,id=»»}

Метрика показывает максимальный объем памяти, который может быть выделен в конкретной области памяти. Это значение устанавливается при запуске JVM. Значение max важно для понимания пределов памяти приложения. Совпадение jvm_memory_used_bytes с jvm_memory_committed_bytes и их быстрые колебания могут указывать на проблемы с утечками памяти.
Параметры области памяти (area):
- Куча (Heap) — это область памяти, используемая для хранения объектов, создаваемых во время выполнения приложения. Включает области «young» и «old». Определяет, сколько памяти выделяется для создания и хранения объектов;
- Не куча (Non-Heap) — эта память используется для хранения метаданных, связанных с классами, методами и вспомогательной информации для JVM. Она не содержит объектов, созданных пользователем.
Параметры идентификаторов (id):
- G1 Eden Space - это пространство, где создаются новые объекты в G1 Garbage Collector. Объекты, которые не доживают до следующей сборки мусора. Позволяет эффективно выделять память для новых объектов с минимальным воздействием на производительность;
- G1 Old Gen - это старая генерация в сборщике мусора G1. Объекты, которые пережили несколько сборок мусора в G1 Eden Space, становятся кандидатами на размещение в G1 Old Gen. Хранит «долговечные» объекты, которые использовались дольше всего;
- G1 Survivor Space - пространство, используемое для объектов, выживших в процессе сборки мусора в G1 Eden Space. Существует несколько областей Survivor. Позволяет временно хранить объекты, передвигая их из «young» в «old», если они доживают до нескольких сборок мусора;
- Metaspace - это область памяти, предназначенная для хранения метаданных классов и методов. Она заменила старую область PermGen и может расти динамически. Не имеет фиксированного размера, поэтому позволяет более гибко управлять динамическим созданием классов;
- CodeHeap „non-nmethods“ - область памяти для хранения данных о скомпилированном коде, который не относится к Java-методам (например, вспомогательные структуры и внутренние представления). Улучшает производительность за счет хранения компилированного кода;
- Compressed Class Space - область памяти, используемая для хранения метаданных о классах в сжатом виде, что позволяет уменьшить объем используемой памяти. Оптимизация расхода памяти за счет сжатия метаданных классов;
- CodeHeap „profiled nmethods“ - область, в которой хранится скомпилированный код, профилированный для оптимизации производительности. Позволяет выполнять оптимизации и улучшения на основе профилирования кода;
- CodeHeap „non-profiled nmethods“ - область для хранения не профилированного скомпилированного кода, который был скомпилирован, но не подвергался наблюдению в ходе выполнения. Обеспечивает хранение кода, который еще не был оптимизирован, сохраняя возможность для дальнейшей доработки и улучшения.

-

-

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

Название

Описание

Размерность

Основные атрибуты

jvm_gc_pause_seconds_count{action=»»,cause=»»}

Метрика показывает общее количество пауз сборщика мусора за определенный период времени. Записывает количество завершенных пауз, соответствующих действию (например, завершение Major или Minor GC). Высокое значение этой метрики может указывать на то, что приложение часто сталкивается с паузами сборщика мусора, особенно если влияние этих пауз чувствуется пользователями.

-

-

jvm_gc_pause_seconds_sum{action=»»,cause=»»}

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

-

-

jvm_gc_pause_seconds_max{action=»»,cause=»»}

Метрика показывает максимальную продолжительность паузы сборщика мусора за указанный период времени. Значение этой метрики позволяет оценить наихудшие случаи задержки во время сборки мусора.
Параметры:
- action:
end of major GC: Указывает на то, что пауза относится к окончанию основной сборки мусора, которая очищает старую генерацию;
end of minor GC: Указывает, что пауза завершилась после легкой сборки мусора, которая очищает молодую генерацию.
- cause:
G1 Evacuation Pause: Это пауза, вызванная процессом эвакуации в сборщике мусора G1, где объекты перемещаются с одной области памяти в другую для освобождения места;
G1 Humongous Allocation: Эта пауза вызвана необходимостью выделить большие объемы памяти (humongous allocation) в G1, когда необходимо обработать большие объекты в памяти.

-

-

jvm_gc_memory_allocated_bytes_total

Предоставляет информацию об общем объеме памяти, выделенной в байтах в JVM для работы приложения. Эта метрика позволяет отслеживать динамическое распределение памяти в процессе работы и понимать, сколько памяти было выделено за все время его выполнения. Эта метрика накопительная, то есть она продолжает расти по мере выделения новой памяти приложением. Накапливаемое значение представляет общее количество памяти, выделенной на данный момент. Увеличение jvm_gc_memory_allocated_bytes_total говорит о том, что приложение либо выделяет больше памяти из-за роста рабочей нагрузки, либо возникает утечка памяти, если выделяемая память не освобождается в результате сборки мусора. Следует учитывать значение в сочетании с другими метриками, такими как jvm_gc_pause_seconds_sum и jvm_memory_used_bytes, чтобы получить полное представление о работе памяти и перераспределении ресурсов.

-

-

jvm_gc_memory_promoted_bytes_total

Метрика отслеживает общее количество памяти (в байтах), которое было перемещено из молодого поколения в старое поколение в сборщике мусора. Увеличение этого значения может указывать на то, что приложения создают большое количество объектов, которые живут долго и не освобождаются. Если метрика стабильна или низка, это может свидетельствовать о том, что приложение эффективно освобождает память, и объекты не задерживаются дольше, чем нужно.

-

-

jvm_gc_max_data_size_bytes

Метрика показывает максимальный размер памяти, который может быть выделен для данных в JVM. Метрика важна для понимания ограничения по памяти, установленного на JVM. Если приложение регулярно достигает этих пределов, может возникнуть необходимость в увеличении размера кучи или оптимизации кода. Если приложение часто достигает этого максимального размера, это может указывать на необходимость более эффективного использования памяти или на необходимость изменить настройки heap size в конфигурации JVM.

-

-

jvm_gc_live_data_size_bytes

Метрика фиксирует размер «живых» данных в байтах, т.е. объектов, которые все еще существуют в памяти и не были собраны сборщиком мусора. Увеличение этой метрики может свидетельствовать о нарастающем потреблении памяти, что может привести к замедлению работы приложения, если не контролируется. Если jvm_gc_live_data_size_bytes близка к значению jvm_gc_max_data_size_bytes, это может предвещать нехватку памяти и потенциальные проблемы с производительностью или даже OutOfMemoryError.

-

-

Группа метрик «JVM Buffer Pools»#

Название

Описание

Размерность

Основные атрибуты

jvm_buffer_memory_used_bytes{id=»»}

Объем памяти, используемой для конкретного типа буферов в байтах. id — может принимать значения mapped (замапленные буферы) и direct (прямые буферы).

-

-

jvm_buffer_count_buffers{id=»»}

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

-

-

jvm_buffer_total_capacity_bytes{id=»»}

Метрика отслеживает общую емкость всех буферов, управляемых JVM, в байтах. Буферы могут использоваться для временного хранения данных, таких как данные ввода-вывода, что позволяет оптимизировать производительность.
Значение для замапленных буферов (id=»mapped»):
- Отображает количество памяти, используемой для замапленных буферов, которые представляют собой область памяти, выделенную в ОС, но использующуюся JVM для работы с файловыми I/O-операциями и другими задачами. Важно знать, что замапленные буферы значительно быстрее по сравнению с обычными объектами кучи, так как они используют память напрямую без копирования.
Значение для прямых буферов (id=»direct»):
- В этой метрике отображается объем памяти, которую занимает память, выделенная для прямых буферов. Прямые буферы часто используются для оптимизации работы с I/O, поскольку обеспечивают более быстрый доступ к памяти. Использование прямых буферов может уменьшать нагрузку на сборщик мусора, так как они не находятся в куче и не требуют участия сборщика для их управления.

-

-

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

Название

Описание

Размерность

Основные атрибуты

jvm_classes_loaded_classes

Метрика отслеживает общее количество классов, загруженных в память JVM в процессе работы приложения.

шт

-

jvm_classes_unloaded_classes_total

Метрика фиксирует общее количество классов, выгруженных из памяти JVM. Это может происходить, когда классы больше не нужны, и сборщик мусора освобождает память.

шт

-

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

Название

Описание

Размерность

Основные атрибуты

messageAcknowledgeTime_seconds_count

Метрика фиксирует общее количество подтверждений (acknowledgments) сообщений, обработанных системой. Она ведет учет того, сколько раз произошло подтверждение обработки сообщения в течение работы приложения. Более высокое значение счетчика указывает на высокую частоту обработки сообщений, что может свидетельствовать об активности системы. Если счетчик не увеличивается, это может указывать на то, что система не обрабатывает сообщения или находится в состоянии, котором нет входящих запросов.

шт

-

messageAcknowledgeTime_seconds_sum

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

мс

-

messageAcknowledgeTime_seconds_max

Максимальное время, затраченное на подтверждение одного сообщения. Используется для выявления выбросов и определения пиков времени обработки. Для проверки правильности этой метрики можно сравнить ее с результатами начала и окончания обработки каждого сообщения. Если вы обрабатываете сообщения и зафиксируете максимальное значение времени, то оно должно соответствовать тому, что вы наблюдаете как максимум за все зарегистрированные временные замеры.

мс

-

meanMessageAcknowledgeTime

Представляет собой показатель, отражающий среднее время, затрачиваемое на подтверждение обработки сообщения в системе, которая использует механизмы асинхронного обмена сообщениями. Можно вычислить, разделив messageAcknowledgeTime_seconds_sum на messageAcknowledgeTime_seconds_count.

мс

-

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

Название

Описание

Размерность

Основные атрибуты

flow_restart_total

Метрика отслеживает общее количество перезапусков потоков

шт

-

flow_error_total

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

шт

-

flow_alive

Показывает текущее активное состояние потоков в системе. Она позволяет отслеживать, сколько потоков в данный момент функционирует и обрабатывает сообщения.

шт

-

flow_registry_size

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

шт

-

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

Название

Описание

Размерность

Основные атрибуты

messageProcessTime_seconds_max

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

мс

-

consumerWaitDeliver_seconds_count

Метрика фиксирует общее количество случаев ожидания доставки сообщений потребителем. Она помогает понять, как часто потребители сталкиваются с задержками, и может использоваться для анализа нагрузки на систему.

шт

-

consumerWaitDeliver_seconds_sum

Метрика суммирует общее время, которое потребители провели в ожидании доставки сообщений.

мс

-

meanMessageProcessTime

Представляет собой среднее время, затраченное на обработку сообщений в системе. Можно вычислить, разделив messageProcessTime_seconds_sum на messageProcessTime_seconds_count.

мс

-

Группа метрик «Consumer Wait Deliver»#

Название

Описание

Размерность

Основные атрибуты

consumerWaitDeliver_seconds_max

Метрика отслеживает максимальное время ожидания, которое потребитель (consumer) испытывает перед получением сообщения.

мс

-

consumerWaitDeliver_seconds_count

Метрика фиксирует общее количество случаев ожидания доставки сообщений потребителем. Она помогает понять, как часто потребители сталкиваются с задержками, и может использоваться для анализа нагрузки на систему.

шт

-

consumerWaitDeliver_seconds_sum

Метрика суммирует общее время, которое потребители провели в ожидании доставки сообщений.

мс

-

meanConsumerWaitDeliver

Представляет собой среднее время ожидания доставки сообщений потребителем. Можно вычислить, разделив consumerWaitDeliver_seconds_sum на consumerWaitDeliver_seconds_count.

мс

-

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

Название

Описание

Размерность

Основные атрибуты

consumerProcessBatch_seconds_max

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

мс

-

consumerProcessBatch_seconds_count

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

шт

-

consumerProcessBatch_seconds_sum

Метрика суммирует общее время, затраченное на обработку всех пакетов сообщений.

мс

-

meanConsumerProcessBatch

Представляет собой среднее время обработки пакета сообщений потребителем. Можно вычислить, разделив consumerProcessBatch_seconds_sum на consumerProcessBatch_seconds_count.

мс

-

consumerReceiveMessages_total

Метрика отслеживает общее количество сообщений, полученных потребителем.

шт

-

consumerErrors_total

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

шт

-

consumerBufferSize

Метрика показывает текущий размер буфера потребителя, который используется для хранения сообщений перед их обработкой. Большой размер буфера может указывать на высокую нагрузку на систему или на задержки в обработке сообщений. Если размер буфера постоянно велик, это может сигнализировать о том, что потребитель не успевает обрабатывать входящие сообщения, что может привести к увеличению времени ожидания и снижению производительности.

-

-

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

Название

Описание

Размерность

Основные атрибуты

producerSendMessageSuccess_total

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

шт

-

producerSendMessageError_total

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

шт

-

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

Название

Описание

Размерность

Основные атрибуты

transform_input_total{jobName=»»,name=»»}

Метрика отслеживает общее количество входящих данных, которые были обработаны.

шт

-

transform_output_total{jobName=»»,name=»»}

Метрика фиксирует общее количество выходных данных, которые были успешно сгенерированы трансформацией.

шт

-

transform_error_total{jobName=»»,name=»»}

Метрика отслеживает общее количество ошибок, возникших в процессе трансформации данных.

шт

-

transform_reject_total{jobName=»»,name=»»}

Метрика фиксирует общее количество данных, которые были отклонены в процессе трансформации.

шт

-

transform_latency_seconds{jobName=»»,name=»»,quantile=»»}

Метрика отслеживает время задержки (латентности) в секундах для обработки данных в процессе трансформации.

мс

-

transform_latency_seconds_bucket{jobName=»»,name=»»,quantile=»»,le=»»}

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

-

-

transform_latency_seconds_max{jobName=»»,name=»»}

Метрика отслеживает максимальное время задержки (латентности) в секундах для обработки данных в процессе трансформации.
Параметры метрик:
- jobName - имя потока из файла *.conf шага flow;
- name - имя шага трансформации из файла *.conf;
- quantile - метрика quantile используется для указания квантилей в распределении данных. Квантили делят набор данных на несколько равных частей. Например, медиана (50-й процентиль) делит данные пополам, так что половина наблюдений находится ниже этого значения, а другая половина – выше. Пример quantile=»0.5» - означает, что вы запрашиваете медиану (50-й процентиль) распределения значений задержки (latency);
- le(lower equal) - метрика используется в системах мониторинга и логирования для обозначения границ диапазонов значений (buckets). В контексте метрик Prometheus, таких как histogram или summary, она указывает верхнюю границу интервала времени, к которому относится данное значение. То есть, все значения, которые меньше или равны значению le, попадают в этот интервал. Пример, le=»0.001» - означает, что данная метрика отслеживает количество событий, у которых задержка (latency) была менее или равна 0.001 секунды.

мс

-

4. Отслеживаемые метрики компонента EVPT#

Отслеживаемые метрики для компонента EVPT описаны подробнее в разделе Мониторинг EVPT.

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

Название

Описание

Размерность

Основные атрибуты

clientConnections

Количество подключений

шт

-

jobsAdded

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

шт

-

failedJobsAdded

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

шт

-

jobsUpdated

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

шт

-

failedJobsUpdated

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

шт

-

jobsCanceled

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

шт

-

failedJobsCanceled

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

шт

-

jobsPaused

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

шт

-

failedJobsPaused

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

шт

-

jobsResumed

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

шт

-

failedJobsResumed

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

шт

-

successfulTaskExecution

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

шт

-

failedTaskExecution

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

шт

-

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

5. Отслеживаемые метрики компонента EVTA#

Отслеживаемые метрики для компонента EVTA описаны подробнее в разделе Мониторинг EVTA.

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

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

Название

Описание

Размерность

Основные атрибуты

MBEAN Name

RetryCount

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

шт

count (количество)

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

FailureCount

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

шт

count (количество)

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

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

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

Название

Описание

Размерность

Основные атрибуты

MBEAN Name

ProducerSendMessageSuccess

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

шт

OneMinuteRate (скорость записи за последнюю минуту)

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

ProducerSendMessageSuccess

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

шт

count (количество)

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

ProducerSendMessageError

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

шт

count (количество)

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

MessageProcessTime

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

MeanMessageProcessTime

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

мс

Mean (среднее время)

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

PmessageAcknowledgeTime

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

MeanMessageAcknowledgeTime

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

мс

Mean (среднее время)

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

EgressProducerSendMessageSuccess

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

шт

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressProducerSendMessageError

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

шт

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressMessageProcessTime

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressMessageAcknowledgeTime

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressMeanMessageProcessTime

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

мс

Value (изменение среднего времени)

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

EgressMeanMessageAcknowledgeTime

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

мс

Value (изменение среднего времени)

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

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

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

Название

Описание

Размерность

Основные атрибуты

MBEAN Name

ConsumerReceiveMessages

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

шт

OneMinuteRate (скорость записи за последнюю минуту)

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

ConsumerReceiveMessages

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

шт

count (количество)

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

ConsumerErrorsCount

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

шт

count (количество)

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

ConsumerProcessBatch

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

ConsumerProcessBatch

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

мс

Mean (среднее время)

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

ConsumerWaitDeliver

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

ConsumerWaitDeliver

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

мс

Mean (среднее время)

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

ConsumerBufferSize

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

шт

Value (изменение среднего времени)

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

EgressConsumerReceiveMessagesOneMinuteRate

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

шт

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressConsumerErrorsOneMinuteRate

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

шт

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressConsumerProcessBatch

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressConsumerProcessBatch

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

мс

Mean (среднее время)

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

EgressConsumerWaitDeliver

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

мс

OneMinuteRate (скорость записи за последнюю минуту)

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

EgressConsumerWaitDeliver

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

мс

Mean (среднее время)

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

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

6. Отслеживаемые метрики компонента EVTD#

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

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

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

Метрика

Триггер

MBEAN Name

Кластер

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

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

describeCluster()
KafkaClusterBrokersCount,
KafkaClusterBrokersList

Кластер

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

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

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

Кластер

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

Должен быть 1

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

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

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

Метрика

Триггер

MBEAN Name

Брокер

Загрузка DRIVE

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

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

Брокер

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

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

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

Брокер

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

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

kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions

Брокер

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

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

kafka.controller:type=KafkaController,name=OfflinePartitionsCount

Брокер

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

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

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

Брокер

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

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

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

Брокер

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

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

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

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

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

Метрика

Триггер

MBEAN Name

Topic

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

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

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

Topic

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

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

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

Topic

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

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

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

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

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

Метрика

Триггер

MBEAN Name

Подписчик

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

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

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

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

7. Отслеживаемые метрики компонента EVTP#

Отслеживаемые метрики для компонента EVTP описаны подробнее в разделе Мониторинг EVTP.

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

Название

Описание

Размерность

Основные атрибуты

Триггер

org.apache.flink.jobmanager.Status.JVM.CPU.Loadru

Загрузка CPU

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

host=tkles-snaps0001.vm.esrt.cloud.ru

от 0 до 1

org.apache.flink.jobmanager.Status.JVM.CPU.Time

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

мс

host=tkles-snaps0001.vm.esrt.cloud.ru

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

org.apache.flink.jobmanager.Status.JVM.Memory.Heap.Used

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

байт

host=tkles-snaps0001.vm.esrt.cloud.ru

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

org.apache.flink.jobmanager.Status.JVM.Memory.Heap.Committed

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

байт

host=tkles-snaps0001.vm.esrt.cloud.ru

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

org.apache.flink.jobmanager.Status.JVM.Memory.Heap.Max

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

байт

host=tkles-snaps0001.vm.esrt.cloud.ru

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

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

Название

Описание

Размерность

Основные атрибуты

Триггер

org.apache.flink.jobmanager.numRegisteredTaskManagers

Кол-во зарегистрированных task-manager

шт

host=tkles-snaps0001.vm.esrt.cloud.ru

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

org.apache.flink.jobmanager.numRunningJobs

Кол-во запущенных служб по кластеру

шт

host=tkles-snaps0001.vm.esrt.cloud.ru

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

org.apache.flink.jobmanager.taskSlotsAvailable

Кол-во свободных слотов

шт

host=tkles-snaps0001.vm.esrt.cloud.ru

-

org.apache.flink.jobmanager.taskSlotsTotal

Всего слотов

шт

host=tkles-snaps0001.vm.esrt.cloud.ru

Не меньше 50

org.apache.flink.taskmanager.Status.JVM.CPU.Load

Загрузка CPU task-manager

байт

host=tkles-snaps0001,tm_id=104af92d2483545

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

org.apache.flink.taskmanager.Status.JVM.CPU.Time

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

мс

host=tkles-snaps0001,tm_id=104af92d2483545043b193c1805f02e0

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

org.apache.flink.taskmanager.Status.JVM.Memory.Heap.Used

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

байт

host=tkles-snaps0001,tm_id=104af92d2483545043b193c1805f02e0

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

org.apache.flink.taskmanager.Status.JVM.Memory.Heap.Committed

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

байт

host=tkles-snaps0001,tm_id=104af92d2483545043b193c1805f02e0

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

org.apache.flink.taskmanager.Status.JVM.Memory.Heap.Max

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

байт

host=tkles-snaps0001,tm_id=104af92d2483545043b193c1805f02e0

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

org.apache.flink.taskmanager.job.task.operator.userId.name

UserId - статическая строковая метрика для обозначения группы Tasks в графе потока обработки флинка и их сопоставления с идентификатором, определенным в параметре userId. Метрика является опциональной. Если в параметрах запуска потокового обработчика указан параметр userId, то такая метрика формируется. Если параметр отсутствует - метрика не формируется.

шт

job_id=jobIdValue,
job_name=jobNameValue,
tm_id=tmIdValue,
task_attempt_id=taskAttemptIdValue,
task_attempt_num=taskAttemptNumValue,
subtask_index=subtaskIndexValue,
task_id=taskIdValue,
operator_name=operatorNameValue,
task_name=taskNameValue,
operator_id=operatorId,
host=hostValue

Отсутствует

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

Название

Описание

Размерность

Основные атрибуты

Триггер

org.apache.flink.jobmanager.job.restartingTime

Сколько времени занимает перезапуск службы, или как долго длится текущий перезапуск

мс

host=tkles-snaps0001.vm.esrt.cloud.ru, job_name=AppTest,job_id=effdc9639a698236fadf1091fc132fca

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

org.apache.flink.jobmanager.job.uptime

Время работы службы

мс

host=tkles-snaps0001.vm.esrt.cloud.ru, job_name=ALPHA.COMMON.ESBSM.XFERSYNC, job_id=2b005e66b405382d85b0c5b0d0bfaef8

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

org.apache.flink.jobmanager.job.downtime

Время недоступности службы

мс

host=tkles-snaps0001.vm.esrt.cloud.ru,job_name=ALPHA.COMMON.ESBSM.XFERSYNC,job_id=2b005e66b405382d85b0c5b0d0bfaef8

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

org.apache.flink.jobmanager.job.numRestarts

Кол-во рестартов службы

шт

host=tkles-snaps0001.vm.esrt.cloud.ru,job_name=ALPHA.COMMON.ESBSM.XFERSYNC,job_id=2b005e66b405382d85b0c5b0d0bfaef8

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

org.apache.flink.jobmanager.job.numberOfFailedCheckpoints

Кол-во неуспешных проверок

шт

host=tkles-snaps0001.vm.esrt.cloud.ru,job_name=ALPHA.COMMON.ESBSM.XFERSYNC,job_id=2b005e66b405382d85b0

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

Shuffle.Netty.Input.Buffers inputQueueLength

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

шт

-

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

Shuffle.Netty.Output.Buffers outputQueueLength

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

шт

-

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

Группа метрик «Task DSL metrics»#

Название

Описание

Размерность

Основные атрибуты

Триггер

input Пример 0.event-flow-transformation-transformationStepName.input для трансформацииПример 0.event-flow-aggregation-transformationStepName.input для агрегации

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

шт

-

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

output Пример 0.event-flow-transformation-transformationStepName.output для трансформацииПример 0.event-flow-aggregation-transformationStepName.output для агрегации

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

шт

-

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

reject Пример 0.event-flow-transformation-transformationStepName.reject для трансформацииПример 0.event-flow-aggregation-transformationStepName.reject для агрегации

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

шт

-

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

error Пример 0.event-flow-transformation-transformationStepName.error для трансформацииПример 0.event-flow-aggregation-transformationStepName.error для агрегации

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

шт

-

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