Перейти к основному содержимому

Метрики (metrics)

Функция metrics публикует метрики Netgap в формате Prometheus. Она используется для мониторинга производительности, построения графиков и настройки алертов.

Для метрик используется pull-модель Prometheus: приложение поднимает HTTP endpoint /metrics, а Prometheus сам обращается к приложению и забирает метрики по настроенному расписанию. Netgap не отправляет метрики в Prometheus самостоятельно.

Подробный состав публикуемых метрик и примеры PromQL-запросов приведены в статье Описание метрик.

Для визуализации метрик в Grafana в поставку/релиз включается готовый дашборд Netgap. Его можно импортировать после подключения Prometheus как источника данных и использовать как базовый набор панелей для мониторинга gateway и executor.

Назначение

Метрики позволяют отслеживать:

  • интенсивность и длительность операций;
  • ошибки и деградации;
  • поведение gateway и executor под нагрузкой;
  • техническое состояние сервиса в динамике.

Для метрик с именами, заканчивающимися на _seconds, используются histogram buckets, подходящие для анализа latency.

Настройки

Секция observability.metrics запускает HTTP endpoint /metrics. Указанный в destination_args адрес должен быть доступен Prometheus, потому что именно Prometheus выполняет scrape-запросы к приложению.

ПолеЗначенияОписание
destinationPrometheusФормат и способ публикации метрик.
destination_argsIP:PORTАдрес, на котором Netgap слушает HTTP endpoint метрик.
service_nameСтрокаИмя сервиса в OpenTelemetry resource для метрик.

По умолчанию используется адрес 0.0.0.0:9090, но в production рекомендуется явно задавать порт и сетевой интерфейс с учетом политики безопасности.

Примеры конфигурации

Endpoint метрик, доступный Prometheus внутри сервисной сети:

observability:
service_name: netgap-gateway
event_targets:
- level: info
target_id: Tech
target_destination: Console
target_args: ""
format: ColorizedANSI
metrics:
destination: Prometheus
destination_args: 0.0.0.0:9090
service_name: netgap-gateway

Отдельный endpoint для executor:

observability:
service_name: netgap-executor
event_targets:
- level: warn
target_id: Tech
target_destination: Console
target_args: ""
format: ColorizedANSI
metrics:
destination: Prometheus
destination_args: 0.0.0.0:9091
service_name: netgap-executor

Пример настройки scrape job на стороне Prometheus:

scrape_configs:
- job_name: netgap-gateway
metrics_path: /metrics
static_configs:
- targets: ["netgap-gateway.example.local:9090"]

После настройки сбора метрик в Prometheus подключите его как data source in Grafana and импортируйте поставляемый дашборд Netgap. Дашборд рассчитан на метрики gateway и executor и может быть адаптирован под соглашения конкретного production-окружения: имена job-ов, labels, папки, алерты и права доступа.

Результат и доставка

Результат работы функции — HTTP endpoint:

GET /metrics

Endpoint возвращает метрики в текстовом формате Prometheus. Доставка работает по pull-модели: Prometheus должен самостоятельно опрашивать этот endpoint по расписанию и забирать актуальные значения метрик из приложения.

Для визуализации можно использовать Grafana. Готовый дашборд для метрик Netgap включается в поставку/релиз, поэтому после подключения источника данных Prometheus его можно импортировать или использовать как основу для production-панелей.

Варианты применения

  • построение SLI/SLO по latency и ошибкам;
  • контроль нагрузки на gateway и executor;
  • алерты по деградации времени обработки;
  • сравнение поведения разных окружений или версий Netgap;
  • capacity planning на основе реальной нагрузки.