Документация Accelera

Метрики 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_dbGaugeСтатус соединения с operational БД (1 - подключено, 0 - отключено)
flows_backoffice_connections_brokerGaugeСтатус соединения с RabbitMQ (1 - подключено, 0 - отключено)
flows_backoffice_connections_analytics_dbGaugeСтатус соединения с analytics БД (1 - подключено, 0 - отключено)
flows_backoffice_connections_redisGaugeСтатус соединения с Redis (1 - подключено, 0 - отключено)
flows_backoffice_connections_apiGaugeСтатус health check API (1 - здоров, 0 - проблемы)
flows_backoffice_api_requests_totalCounterОбщее количество API запросов с момента запуска
flows_backoffice_api_responses_5xx_totalCounterКоличество 5xx ответов (ошибки сервера)
flows_backoffice_api_responses_4xx_totalCounterКоличество 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_dbGaugeСтатус соединения с operational БД (1 - подключено, 0 - отключено)
flows_engine_connections_brokerGaugeСтатус соединения с RabbitMQ (1 - подключено, 0 - отключено)
flows_engine_connections_redisGaugeСтатус соединения с Redis (1 - подключено, 0 - отключено)
flows_engine_runtime_flows_startedGaugeТекущее количество запущенных flows
flows_engine_runtime_flows_pausedGaugeТекущее количество приостановленных flows
flows_engine_runtime_events_totalCounterОбщее количество входящих событий с момента запуска
flows_engine_runtime_events_processed_totalCounterКоличество успешно обработанных событий
flows_engine_runtime_events_errors_totalCounterКоличество ошибок при обработке событий

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_dbGaugeСтатус соединения с operational БД (1 - подключено, 0 - отключено)
flows_actions_connections_brokerGaugeСтатус соединения с RabbitMQ (1 - подключено, 0 - отключено)
flows_actions_connections_redisGaugeСтатус соединения с Redis (1 - подключено, 0 - отключено)
flows_actions_runtime_actions_totalCounterОбщее количество входящих действий с момента запуска
flows_actions_runtime_actions_errors_totalCounterКоличество ошибок при выполнении действий

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_brokerGaugeСтатус соединения с RabbitMQ (1 - подключено, 0 - отключено)
flows_bulk_connections_analytics_dbGaugeСтатус соединения с analytics БД (1 - подключено, 0 - отключено)
flows_bulk_runtime_data_write_errors_totalCounterКоличество ошибок записи данных в БД
flows_bulk_runtime_fs_errors_totalCounterКоличество ошибок файловой системы
flows_bulk_analytics_rows_log_table_totalCounterКоличество записанных строк в таблицу log_table
flows_bulk_analytics_rows_tags_totalCounterКоличество записанных строк в таблицу tags
flows_bulk_analytics_rows_accelera_api_totalCounterКоличество записанных строк в таблицу accelera_api
flows_bulk_analytics_rows_ad_tag_totalCounterКоличество записанных строк в таблицу ad_tag
flows_bulk_analytics_rows_decision_tables_results_totalCounterКоличество записанных строк результатов decision tables
flows_bulk_analytics_rows_sync_engine_requests_totalCounterКоличество записанных строк запросов sync engine
flows_bulk_analytics_rows_segments_log_totalCounterКоличество записанных строк логов сегментов

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_dbGaugeСтатус соединения с operational БД (1 - подключено, 0 - отключено)
flows_timers_connections_brokerGaugeСтатус соединения с RabbitMQ (1 - подключено, 0 - отключено)
flows_timers_runtime_timers_totalGaugeТекущее количество активных таймеров
flows_timers_runtime_event_sent_totalCounterКоличество отправленных событий по таймерам
flows_timers_runtime_event_sent_errors_totalCounterКоличество ошибок отправки событий
flows_timers_runtime_timers_errors_totalCounterКоличество ошибок в работе таймеров

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_dbGaugeСтатус соединения с operational БД (1 - подключено, 0 - отключено)
flows_segments_connections_source_dbGaugeСтатус соединения с source БД (1 - подключено, 0 - отключено)
flows_segments_connections_brokerGaugeСтатус соединения с AMQP брокером (1 - подключено, 0 - отключено)
flows_segments_connections_redisGaugeСтатус соединения с Redis (1 - подключено, 0 - отключено)
flows_segments_runtime_segments_activeGaugeТекущее количество активно выполняющихся сегментов
flows_segments_runtime_connection_poolGaugeТекущий размер пула соединений с source database
flows_segments_runtime_segments_processing_errors_totalCounterОбщее количество ошибок при обработке сегментов

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]))) * 100

Segments 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)

На этой странице