Метрики (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-запросы к приложению.
| Поле | Значения | Описание |
|---|---|---|
destination | Prometheus | Формат и способ публикации метрик. |
destination_args | IP: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 на основе реальной нагрузки.