Метрики Prometheus
Для каждого компонента системы Accelera доступны метрики в формате Prometheus.
Метрики доступны для основных образов, настройки которых перечислены в 📦Файл конфигурации docker-compose
Активация метрик
При запуске контейнера необходимо указать следующие переменные среды для контейнеров:
environment:
- ENABLE_METRICS=true
- METRICS_PORT=3010
- INTERNAL_PROCESS_METRICS_ENABLE=false # опциональноENABLE_METRICS - активация сбора и выдачи метрик. По умолчанию - false. Если переменная не указана или имеет значение отличное от true, метрики не будут активны и не будут занимать память.
METRICS_PORT - порт для выдачи метрик. По умолчанию - 3010 для worker-сервисов (flows_engine, flows_actions, bulk_worker, flow_timers). Для backoffice метрики доступны на основном порту приложения.
INTERNAL_PROCESS_METRICS_ENABLE - (опционально) включить дефолтные метрики Node.js процесса (CPU, memory, event loop, GC). По умолчанию - false. Рекомендуется включать только при анализе производительности, не рекомендуется использовать в продакшене постоянно.
При запуске контейнеров с параметром network_mode: "host" потребуется указать индивидуальный порт для каждого контейнера. Иначе будет ошибка "Address already in use".
Метрики выдаются по адресу /metrics:
- backoffice: http://flows_backoffice:3000/metrics
- flows_engine: http://flows_engine:3010/metrics
- flows_actions: http://flows_actions:3010/metrics
- bulk_worker: http://bulk_worker:3010/metrics
- flow_timers: http://flow_timers:3010/metrics
- flows_segments: http://flows_segments:3010/metrics
Содержимое метрик
Дополнительные метрики приложений
Дополнительные метрики приходят в общем массиве метрик Prometheus, состав отличается для каждого модуля.
backoffice (flows_backoffice)
Основной API сервис системы.
Метрики подключений (Gauge, значения 0/1):
# HELP flows_backoffice_connections_operational_db Operational database connection status (1 - connected, 0 - disconnected)
# TYPE flows_backoffice_connections_operational_db gauge
flows_backoffice_connections_operational_db 1
# HELP flows_backoffice_connections_broker RabbitMQ broker connection status (1 - connected, 0 - disconnected)
# TYPE flows_backoffice_connections_broker gauge
flows_backoffice_connections_broker 1
# HELP flows_backoffice_connections_analytics_db Analytics database connection status (1 - connected, 0 - disconnected)
# TYPE flows_backoffice_connections_analytics_db gauge
flows_backoffice_connections_analytics_db 1
# HELP flows_backoffice_connections_redis Redis connection status (1 - connected, 0 - disconnected)
# TYPE flows_backoffice_connections_redis gauge
flows_backoffice_connections_redis 1
# HELP flows_backoffice_connections_api API health check status (1 - healthy, 0 - unhealthy)
# TYPE flows_backoffice_connections_api gauge
flows_backoffice_connections_api 1Метрики API запросов (Counter, нарастающие значения):
# HELP flows_backoffice_api_requests_total Total number of API requests
# TYPE flows_backoffice_api_requests_total counter
flows_backoffice_api_requests_total 15234
# HELP flows_backoffice_api_responses_5xx_total Total number of API 5xx responses
# TYPE flows_backoffice_api_responses_5xx_total counter
flows_backoffice_api_responses_5xx_total 12
# HELP flows_backoffice_api_responses_4xx_total Total number of API 4xx responses
# TYPE flows_backoffice_api_responses_4xx_total counter
flows_backoffice_api_responses_4xx_total 234| Метрика | Тип | Описание |
|---|---|---|
| flows_backoffice_connections_operational_db | Gauge | Статус соединения с operational БД (1 - подключено, 0 - отключено) |
| flows_backoffice_connections_broker | Gauge | Статус соединения с RabbitMQ (1 - подключено, 0 - отключено) |
| flows_backoffice_connections_analytics_db | Gauge | Статус соединения с analytics БД (1 - подключено, 0 - отключено) |
| flows_backoffice_connections_redis | Gauge | Статус соединения с Redis (1 - подключено, 0 - отключено) |
| flows_backoffice_connections_api | Gauge | Статус health check API (1 - здоров, 0 - проблемы) |
| flows_backoffice_api_requests_total | Counter | Общее количество API запросов с момента запуска |
| flows_backoffice_api_responses_5xx_total | Counter | Количество 5xx ответов (ошибки сервера) |
| flows_backoffice_api_responses_4xx_total | Counter | Количество 4xx ответов (ошибки клиента) |
flows_engine
Основной движок выполнения рабочих процессов (flows).
Метрики подключений (Gauge, значения 0/1):
# HELP flows_engine_connections_operational_db Operational database connection status (1 - connected, 0 - disconnected)
# TYPE flows_engine_connections_operational_db gauge
flows_engine_connections_operational_db 1
# HELP flows_engine_connections_broker RabbitMQ broker connection status (1 - connected, 0 - disconnected)
# TYPE flows_engine_connections_broker gauge
flows_engine_connections_broker 1
# HELP flows_engine_connections_redis Redis connection status (1 - connected, 0 - disconnected)
# TYPE flows_engine_connections_redis gauge
flows_engine_connections_redis 1Метрики выполнения flows (Gauge, текущие значения):
# HELP flows_engine_runtime_flows_started Number of currently started flows
# TYPE flows_engine_runtime_flows_started gauge
flows_engine_runtime_flows_started 45
# HELP flows_engine_runtime_flows_paused Number of currently paused flows
# TYPE flows_engine_runtime_flows_paused gauge
flows_engine_runtime_flows_paused 3Метрики обработки событий (Counter, нарастающие значения):
# HELP flows_engine_runtime_events_total Total number of incoming events
# TYPE flows_engine_runtime_events_total counter
flows_engine_runtime_events_total 125678
# HELP flows_engine_runtime_events_processed_total Total number of processed events
# TYPE flows_engine_runtime_events_processed_total counter
flows_engine_runtime_events_processed_total 125420
# HELP flows_engine_runtime_events_errors_total Total number of event processing errors
# TYPE flows_engine_runtime_events_errors_total counter
flows_engine_runtime_events_errors_total 258| Метрика | Тип | Описание |
|---|---|---|
| flows_engine_connections_operational_db | Gauge | Статус соединения с operational БД (1 - подключено, 0 - отключено) |
| flows_engine_connections_broker | Gauge | Статус соединения с RabbitMQ (1 - подключено, 0 - отключено) |
| flows_engine_connections_redis | Gauge | Статус соединения с Redis (1 - подключено, 0 - отключено) |
| flows_engine_runtime_flows_started | Gauge | Текущее количество запущенных flows |
| flows_engine_runtime_flows_paused | Gauge | Текущее количество приостановленных flows |
| flows_engine_runtime_events_total | Counter | Общее количество входящих событий с момента запуска |
| flows_engine_runtime_events_processed_total | Counter | Количество успешно обработанных событий |
| flows_engine_runtime_events_errors_total | Counter | Количество ошибок при обработке событий |
flows_actions
Сервис выполнения действий в flows.
Метрики подключений (Gauge, значения 0/1):
# HELP flows_actions_connections_operational_db Operational database connection status (1 - connected, 0 - disconnected)
# TYPE flows_actions_connections_operational_db gauge
flows_actions_connections_operational_db 1
# HELP flows_actions_connections_broker RabbitMQ broker connection status (1 - connected, 0 - disconnected)
# TYPE flows_actions_connections_broker gauge
flows_actions_connections_broker 1
# HELP flows_actions_connections_redis Redis connection status (1 - connected, 0 - disconnected)
# TYPE flows_actions_connections_redis gauge
flows_actions_connections_redis 1Метрики выполнения действий (Counter, нарастающие значения):
# HELP flows_actions_runtime_actions_total Total number of incoming actions
# TYPE flows_actions_runtime_actions_total counter
flows_actions_runtime_actions_total 89567
# HELP flows_actions_runtime_actions_errors_total Total number of action execution errors
# TYPE flows_actions_runtime_actions_errors_total counter
flows_actions_runtime_actions_errors_total 145| Метрика | Тип | Описание |
|---|---|---|
| flows_actions_connections_operational_db | Gauge | Статус соединения с operational БД (1 - подключено, 0 - отключено) |
| flows_actions_connections_broker | Gauge | Статус соединения с RabbitMQ (1 - подключено, 0 - отключено) |
| flows_actions_connections_redis | Gauge | Статус соединения с Redis (1 - подключено, 0 - отключено) |
| flows_actions_runtime_actions_total | Counter | Общее количество входящих действий с момента запуска |
| flows_actions_runtime_actions_errors_total | Counter | Количество ошибок при выполнении действий |
bulk_worker (flows_bulk)
Сервис массовой записи аналитических данных.
Метрики подключений (Gauge, значения 0/1):
# HELP flows_bulk_connections_broker RabbitMQ broker connection status (1 - connected, 0 - disconnected)
# TYPE flows_bulk_connections_broker gauge
flows_bulk_connections_broker 1
# HELP flows_bulk_connections_analytics_db Analytics database connection status (1 - connected, 0 - disconnected)
# TYPE flows_bulk_connections_analytics_db gauge
flows_bulk_connections_analytics_db 1Метрики ошибок (Counter, нарастающие значения):
# HELP flows_bulk_runtime_data_write_errors_total Total number of data write errors
# TYPE flows_bulk_runtime_data_write_errors_total counter
flows_bulk_runtime_data_write_errors_total 5
# HELP flows_bulk_runtime_fs_errors_total Total number of filesystem errors
# TYPE flows_bulk_runtime_fs_errors_total counter
flows_bulk_runtime_fs_errors_total 2Метрики записи аналитических данных (Counter, нарастающие значения):
# HELP flows_bulk_analytics_rows_log_table_total Total number of log table rows written
# TYPE flows_bulk_analytics_rows_log_table_total counter
flows_bulk_analytics_rows_log_table_total 1567890
# HELP flows_bulk_analytics_rows_tags_total Total number of tag rows written
# TYPE flows_bulk_analytics_rows_tags_total counter
flows_bulk_analytics_rows_tags_total 234567
# HELP flows_bulk_analytics_rows_accelera_api_total Total number of accelera API rows written
# TYPE flows_bulk_analytics_rows_accelera_api_total counter
flows_bulk_analytics_rows_accelera_api_total 45678
# HELP flows_bulk_analytics_rows_ad_tag_total Total number of ad tag rows written
# TYPE flows_bulk_analytics_rows_ad_tag_total counter
flows_bulk_analytics_rows_ad_tag_total 12345
# HELP flows_bulk_analytics_rows_decision_tables_results_total Total number of decision tables result rows written
# TYPE flows_bulk_analytics_rows_decision_tables_results_total counter
flows_bulk_analytics_rows_decision_tables_results_total 8901
# HELP flows_bulk_analytics_rows_sync_engine_requests_total Total number of sync engine request rows written
# TYPE flows_bulk_analytics_rows_sync_engine_requests_total counter
flows_bulk_analytics_rows_sync_engine_requests_total 5678
# HELP flows_bulk_analytics_rows_segments_log_total Total number of segments log rows written
# TYPE flows_bulk_analytics_rows_segments_log_total counter
flows_bulk_analytics_rows_segments_log_total 34567| Метрика | Тип | Описание |
|---|---|---|
| flows_bulk_connections_broker | Gauge | Статус соединения с RabbitMQ (1 - подключено, 0 - отключено) |
| flows_bulk_connections_analytics_db | Gauge | Статус соединения с analytics БД (1 - подключено, 0 - отключено) |
| flows_bulk_runtime_data_write_errors_total | Counter | Количество ошибок записи данных в БД |
| flows_bulk_runtime_fs_errors_total | Counter | Количество ошибок файловой системы |
| flows_bulk_analytics_rows_log_table_total | Counter | Количество записанных строк в таблицу log_table |
| flows_bulk_analytics_rows_tags_total | Counter | Количество записанных строк в таблицу tags |
| flows_bulk_analytics_rows_accelera_api_total | Counter | Количество записанных строк в таблицу accelera_api |
| flows_bulk_analytics_rows_ad_tag_total | Counter | Количество записанных строк в таблицу ad_tag |
| flows_bulk_analytics_rows_decision_tables_results_total | Counter | Количество записанных строк результатов decision tables |
| flows_bulk_analytics_rows_sync_engine_requests_total | Counter | Количество записанных строк запросов sync engine |
| flows_bulk_analytics_rows_segments_log_total | Counter | Количество записанных строк логов сегментов |
flow_timers (flows_timers)
Сервис планировщика задач и таймеров.
Метрики подключений (Gauge, значения 0/1):
# HELP flows_timers_connections_operational_db Operational database connection status (1 - connected, 0 - disconnected)
# TYPE flows_timers_connections_operational_db gauge
flows_timers_connections_operational_db 1
# HELP flows_timers_connections_broker RabbitMQ broker connection status (1 - connected, 0 - disconnected)
# TYPE flows_timers_connections_broker gauge
flows_timers_connections_broker 1Метрики таймеров (Gauge, текущие значения):
# HELP flows_timers_runtime_timers_total Current number of active timers
# TYPE flows_timers_runtime_timers_total gauge
flows_timers_runtime_timers_total 156Метрики событий и ошибок (Counter, нарастающие значения):
# HELP flows_timers_runtime_event_sent_total Total number of events sent
# TYPE flows_timers_runtime_event_sent_total counter
flows_timers_runtime_event_sent_total 23456
# HELP flows_timers_runtime_event_sent_errors_total Total number of event send errors
# TYPE flows_timers_runtime_event_sent_errors_total counter
flows_timers_runtime_event_sent_errors_total 12
# HELP flows_timers_runtime_timers_errors_total Total number of timer errors
# TYPE flows_timers_runtime_timers_errors_total counter
flows_timers_runtime_timers_errors_total 3| Метрика | Тип | Описание |
|---|---|---|
| flows_timers_connections_operational_db | Gauge | Статус соединения с operational БД (1 - подключено, 0 - отключено) |
| flows_timers_connections_broker | Gauge | Статус соединения с RabbitMQ (1 - подключено, 0 - отключено) |
| flows_timers_runtime_timers_total | Gauge | Текущее количество активных таймеров |
| flows_timers_runtime_event_sent_total | Counter | Количество отправленных событий по таймерам |
| flows_timers_runtime_event_sent_errors_total | Counter | Количество ошибок отправки событий |
| flows_timers_runtime_timers_errors_total | Counter | Количество ошибок в работе таймеров |
flows_segments (Accelera Segments)
Сервис обработки сегментов и выполнения маркетинговых кампаний. Работает с графами нод (drawflow) для построения выборок данных из source database и выполнения действий (рассылки, сохранение в таблицы).
Метрики подключений (Gauge, значения 0/1):
# HELP flows_segments_connections_operational_db Operational database connection status (1 - connected, 0 - disconnected)
# TYPE flows_segments_connections_operational_db gauge
flows_segments_connections_operational_db 1
# HELP flows_segments_connections_source_db Source database connection status (1 - connected, 0 - disconnected)
# TYPE flows_segments_connections_source_db gauge
flows_segments_connections_source_db 1
# HELP flows_segments_connections_broker AMQP broker connection status (1 - connected, 0 - disconnected)
# TYPE flows_segments_connections_broker gauge
flows_segments_connections_broker 1
# HELP flows_segments_connections_redis Redis connection status (1 - connected, 0 - disconnected)
# TYPE flows_segments_connections_redis gauge
flows_segments_connections_redis 1Метрики выполнения сегментов (Gauge, текущие значения):
# HELP flows_segments_runtime_segments_active Number of currently active segments
# TYPE flows_segments_runtime_segments_active gauge
flows_segments_runtime_segments_active 3
# HELP flows_segments_runtime_connection_pool Current database connection pool size
# TYPE flows_segments_runtime_connection_pool gauge
flows_segments_runtime_connection_pool 5Метрики ошибок (Counter, нарастающие значения):
# HELP flows_segments_runtime_segments_processing_errors_total Total number of segment processing errors
# TYPE flows_segments_runtime_segments_processing_errors_total counter
flows_segments_runtime_segments_processing_errors_total 12| Метрика | Тип | Описание |
|---|---|---|
| flows_segments_connections_operational_db | Gauge | Статус соединения с operational БД (1 - подключено, 0 - отключено) |
| flows_segments_connections_source_db | Gauge | Статус соединения с source БД (1 - подключено, 0 - отключено) |
| flows_segments_connections_broker | Gauge | Статус соединения с AMQP брокером (1 - подключено, 0 - отключено) |
| flows_segments_connections_redis | Gauge | Статус соединения с Redis (1 - подключено, 0 - отключено) |
| flows_segments_runtime_segments_active | Gauge | Текущее количество активно выполняющихся сегментов |
| flows_segments_runtime_connection_pool | Gauge | Текущий размер пула соединений с source database |
| flows_segments_runtime_segments_processing_errors_total | Counter | Общее количество ошибок при обработке сегментов |
Source database - база данных с исходными данными (клиентская БД), из которой сегменты делают выборки. Может быть PostgreSQL, Oracle, ClickHouse или MS SQL Server.
Connection pool - пул соединений с source database. При высокой нагрузке пул может быть исчерпан, что приведет к ошибкам обработки сегментов. Рекомендуется мониторить этот показатель.
Дефолтные метрики Node.js процесса
Если установлена переменная окружения INTERNAL_PROCESS_METRICS_ENABLE=true, дополнительно доступны стандартные метрики Node.js процесса:
# HELP process_cpu_user_seconds_total Total user CPU time spent in seconds.
# TYPE process_cpu_user_seconds_total counter
process_cpu_user_seconds_total 0.233735
# HELP process_cpu_system_seconds_total Total system CPU time spent in seconds.
# TYPE process_cpu_system_seconds_total counter
process_cpu_system_seconds_total 0.093971
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 154116096
# HELP process_heap_bytes Process heap size in bytes.
# TYPE process_heap_bytes gauge
process_heap_bytes 203395072
# HELP nodejs_eventloop_lag_seconds Lag of event loop in seconds.
# TYPE nodejs_eventloop_lag_seconds gauge
nodejs_eventloop_lag_seconds 0.012087281
# HELP nodejs_heap_size_total_bytes Process heap size from Node.js in bytes.
# TYPE nodejs_heap_size_total_bytes gauge
nodejs_heap_size_total_bytes 117719040
# HELP nodejs_heap_size_used_bytes Process heap size used from Node.js in bytes.
# TYPE nodejs_heap_size_used_bytes gauge
nodejs_heap_size_used_bytes 87468968
# HELP nodejs_gc_duration_seconds Garbage collection duration by kind
# TYPE nodejs_gc_duration_seconds histogram
nodejs_gc_duration_seconds_bucket{le="0.001",kind="minor"} 0
nodejs_gc_duration_seconds_bucket{le="0.01",kind="minor"} 1
...Дефолтные метрики Node.js добавляют ~15 метрик и небольшие накладные расходы на производительность. Рекомендуется включать только при необходимости детального анализа производительности приложения.
Типы метрик Prometheus
Gauge (Датчик)
Метрика типа Gauge представляет текущее значение, которое может увеличиваться и уменьшаться. Используется для:
- Статусов подключений (0/1)
- Количества активных flows
- Количества активных таймеров
- Текущего использования памяти
Пример: flows_engine_runtime_flows_started 45 - в данный момент запущено 45 flows.
Counter (Счетчик)
Метрика типа Counter представляет монотонно возрастающее значение (никогда не уменьшается). Сбрасывается только при перезапуске приложения. Используется для:
- Общего количества запросов
- Общего количества ошибок
- Общего количества обработанных событий
- Количества записанных строк в БД
Пример: flows_backoffice_api_requests_total 15234 - всего было обработано 15234 API запроса с момента запуска.
Для анализа скорости изменения Counter метрик в Prometheus используйте функцию rate():
rate(flows_backoffice_api_requests_total[5m])Это покажет среднее количество запросов в секунду за последние 5 минут.
Настройка Prometheus
Конфигурация scrape
Пример настройки Prometheus для сбора метрик с сервисов Accelera:
scrape_configs:
- job_name: 'accelera-backoffice'
static_configs:
- targets: ['flows_backoffice:3000']
metrics_path: '/metrics'
scrape_interval: 15s
- job_name: 'accelera-flows-engine'
static_configs:
- targets: ['flows_engine:3010']
metrics_path: '/metrics'
scrape_interval: 15s
- job_name: 'accelera-flows-actions'
static_configs:
- targets: ['flows_actions:3010']
metrics_path: '/metrics'
scrape_interval: 15s
- job_name: 'accelera-bulk-worker'
static_configs:
- targets: ['bulk_worker:3010']
metrics_path: '/metrics'
scrape_interval: 15s
- job_name: 'accelera-flow-timers'
static_configs:
- targets: ['flow_timers:3010']
metrics_path: '/metrics'
scrape_interval: 15s
- job_name: 'accelera-flows-segments'
static_configs:
- targets: ['flows_segments:3010']
metrics_path: '/metrics'
scrape_interval: 15sНастройка dashboard в Grafana
Основные панели
System Health Dashboard
Подключения к сервисам:
flows_backoffice_connections_operational_db
flows_backoffice_connections_broker
flows_backoffice_connections_redis
flows_backoffice_connections_analytics_dbИспользуйте визуализацию Stat с пороговыми значениями: 0 = красный, 1 = зеленый.
API Request Rate:
rate(flows_backoffice_api_requests_total[5m])Используйте визуализацию Graph для отображения динамики запросов.
API Error Rate:
rate(flows_backoffice_api_responses_5xx_total[5m])API Error Ratio:
rate(flows_backoffice_api_responses_5xx_total[5m]) / rate(flows_backoffice_api_requests_total[5m]) * 100Показывает процент ошибочных запросов.
Flows Engine Dashboard
Активные flows:
flows_engine_runtime_flows_started
flows_engine_runtime_flows_pausedСобытия в секунду:
rate(flows_engine_runtime_events_total[5m])Процент успешной обработки событий:
rate(flows_engine_runtime_events_processed_total[5m]) / rate(flows_engine_runtime_events_total[5m]) * 100Скорость ошибок:
rate(flows_engine_runtime_events_errors_total[5m])Bulk Worker Dashboard
Скорость записи в log_table:
rate(flows_bulk_analytics_rows_log_table_total[5m])Общая скорость записи аналитики:
sum(
rate(flows_bulk_analytics_rows_log_table_total[5m]),
rate(flows_bulk_analytics_rows_tags_total[5m]),
rate(flows_bulk_analytics_rows_accelera_api_total[5m]),
rate(flows_bulk_analytics_rows_ad_tag_total[5m])
)Ошибки записи:
rate(flows_bulk_runtime_data_write_errors_total[5m])
rate(flows_bulk_runtime_fs_errors_total[5m])Timers Dashboard
Количество активных таймеров:
flows_timers_runtime_timers_totalСкорость отправки событий по таймерам:
rate(flows_timers_runtime_event_sent_total[5m])Процент успешной отправки:
(1 - (rate(flows_timers_runtime_event_sent_errors_total[5m]) / rate(flows_timers_runtime_event_sent_total[5m]))) * 100Segments Dashboard
Активные сегменты:
flows_segments_runtime_segments_activeРазмер пула соединений:
flows_segments_runtime_connection_poolСкорость ошибок обработки сегментов:
rate(flows_segments_runtime_segments_processing_errors_total[5m])Статус подключений:
flows_segments_connections_operational_db
flows_segments_connections_source_db
flows_segments_connections_broker
flows_segments_connections_redisИспользуйте визуализацию Stat с пороговыми значениями: 0 = красный, 1 = зеленый.
Alerting правила
Примеры алертов для Prometheus Alertmanager:
groups:
- name: accelera_alerts
interval: 30s
rules:
# Отключение сервисов
- alert: ServiceConnectionDown
expr: |
(flows_backoffice_connections_operational_db == 0) or
(flows_backoffice_connections_broker == 0) or
(flows_backoffice_connections_redis == 0) or
(flows_engine_connections_broker == 0) or
(flows_segments_connections_source_db == 0) or
(flows_segments_connections_operational_db == 0)
for: 1m
labels:
severity: critical
annotations:
summary: "Service connection is down"
description: "{{ $labels.instance }} connection to {{ $labels.__name__ }} is down"
# Высокий процент ошибок API
- alert: HighAPIErrorRate
expr: |
rate(flows_backoffice_api_responses_5xx_total[5m]) / rate(flows_backoffice_api_requests_total[5m]) > 0.05
for: 5m
labels:
severity: warning
annotations:
summary: "High API error rate"
description: "API error rate is {{ $value | humanizePercentage }} (threshold: 5%)"
# Ошибки обработки событий в flows_engine
- alert: HighEventProcessingErrors
expr: |
rate(flows_engine_runtime_events_errors_total[5m]) > 10
for: 5m
labels:
severity: warning
annotations:
summary: "High event processing error rate"
description: "Event processing errors: {{ $value | humanize }} errors/sec"
# Ошибки записи данных в bulk_worker
- alert: DataWriteErrors
expr: |
rate(flows_bulk_runtime_data_write_errors_total[5m]) > 1
for: 5m
labels:
severity: warning
annotations:
summary: "Data write errors detected"
description: "Data write errors: {{ $value | humanize }} errors/sec"
# Низкая скорость обработки событий
- alert: LowEventProcessingRate
expr: |
rate(flows_engine_runtime_events_processed_total[5m]) < 1
for: 10m
labels:
severity: info
annotations:
summary: "Low event processing rate"
description: "Event processing rate is very low: {{ $value | humanize }} events/sec"
# Отключение source database в flows_segments
- alert: SegmentsSourceDatabaseDown
expr: |
flows_segments_connections_source_db == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Segments source database connection is down"
description: "flows_segments cannot connect to source database"
# Исчерпание пула соединений
- alert: SegmentsConnectionPoolExhausted
expr: |
flows_segments_runtime_connection_pool > 9
for: 5m
labels:
severity: warning
annotations:
summary: "Segments connection pool is exhausted"
description: "Connection pool size: {{ $value }}. Risk of processing errors."
# Ошибки обработки сегментов
- alert: HighSegmentProcessingErrors
expr: |
rate(flows_segments_runtime_segments_processing_errors_total[5m]) > 0.5
for: 5m
labels:
severity: warning
annotations:
summary: "High segment processing error rate"
description: "Segment processing errors: {{ $value | humanize }} errors/sec"Проверка работы метрик
После запуска контейнеров с включенными метриками, проверьте их доступность:
# Проверка backoffice
curl http://localhost:3000/metrics
# Проверка flows_engine
curl http://localhost:3010/metrics
# Поиск конкретной метрики
curl http://localhost:3000/metrics | grep flows_backoffice_api_requests_total
# Проверка статуса подключений
curl http://localhost:3010/metrics | grep connectionsОжидаемый вывод для метрик подключений:
# HELP flows_engine_connections_operational_db Operational database connection status (1 - connected, 0 - disconnected)
# TYPE flows_engine_connections_operational_db gauge
flows_engine_connections_operational_db 1Где 1 означает успешное подключение, 0 означает отсутствие подключения.
Часто задаваемые вопросы
Могут ли быть утечки памяти, если метрики включены?
Нет. Метрики Prometheus типа Counter и Gauge хранят только одно число (текущее значение), а не историю всех изменений. История хранится на стороне Prometheus сервера. Даже если система работает месяцами, метрики займут менее 1 МБ памяти.
Что будет, если забыть установить ENABLE_METRICS=true?
Метрики просто не будут собираться. Endpoint /metrics вернет пустой ответ или минимальный набор данных. Это не повлияет на работу приложения и не вызовет ошибок.
Влияют ли метрики на производительность?
Минимально. Инкремент Counter или установка Gauge занимает 1-2 наносекунды. При высокой нагрузке влияние составляет менее 0.1% CPU.
Зачем нужна переменная INTERNAL_PROCESS_METRICS_ENABLE?
Дефолтные метрики Node.js (CPU, memory, event loop, GC) полезны для глубокого анализа производительности, но добавляют ~15 дополнительных метрик и небольшие накладные расходы. В продакшене рекомендуется использовать только прикладные метрики (connections, requests, events), а процессные метрики включать только при необходимости диагностики проблем.
Можно ли использовать Zabbix и Prometheus одновременно?
Да. Система поддерживает dual reporting - Zabbix (ZABBIX_ENABLE=true) и Prometheus (ENABLE_METRICS=true) работают независимо и могут быть включены одновременно без конфликтов.
Версия: 2.1 (обновлено: 31 октября 2025)