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

Описание метрик

Netgap публикует технические метрики компонентов gateway и executor через функцию Метрики (metrics). Метрики помогают контролировать поток запросов, ошибки, задержки обработки и состояние внутренних очередей.

Важно: метрики предназначены для прикладного мониторинга и алертинга. Они не содержат тела запросов, тела ответов, значений HTTP-заголовков или других пользовательских данных. В /metrics передаются только агрегированные бизнес- и технические показатели: счетчики событий, распределения длительности, текущие размеры очередей и другие числовые значения, необходимые для контроля состояния Netgap.

Группы метрик

Netgap использует три основных типа метрик Prometheus:

ТипНазначениеПример использования
counterМонотонно растущий счетчик событий.Количество запросов, ошибок, операций с очередью.
histogramРаспределение длительности операций по bucket-ам.Latency, время обработки, время вызова целевого сервиса.
gaugeТекущее значение, которое может расти и уменьшаться.Размер очереди запросов, размер пула соединений.

Для histogram-метрик с суффиксом _seconds значения указываются в секундах. В Prometheus такие метрики обычно представлены сериями _bucket, _sum и _count.

Метрики netgap-gateway

Gateway принимает клиентские HTTP-запросы, ставит их в очередь для executor и возвращает клиенту ответ. Метрики gateway показывают входящую нагрузку, ошибки, задержки и состояние внутренних структур.

МетрикаТипЧто показывает
netgap_gateway_requestscounterКоличество HTTP-запросов, принятых gateway для обработки.
netgap_gateway_errorscounterКоличество ошибок обработки на стороне gateway.
netgap_gateway_processing_time_secondshistogramВремя обработки запроса в gateway.
netgap_gateway_total_latency_secondshistogramПолная задержка от получения запроса gateway до отправки ответа клиенту.
netgap_gateway_netgap_latency_secondshistogramЗадержка внутри компонентов Netgap без времени вызова целевого сервиса.
netgap_gateway_target_call_time_secondshistogramВремя вызова целевого сервиса, полученное от executor и отраженное на стороне gateway.
netgap_gateway_queue_sizegaugeТекущий размер очереди запросов gateway.
netgap_gateway_connection_pool_sizegaugeТекущий размер пула ожидающих клиентских соединений.

Метрики очереди gateway

Очередь gateway используется для передачи запросов executor-у. Эти метрики помогают увидеть накопление нагрузки и дисбаланс между поступлением и обработкой запросов.

МетрикаТипЧто показывает
netgap_gateway_request_queue_pushescounterСколько запросов было помещено в очередь.
netgap_gateway_request_queue_popscounterСколько запросов было извлечено из очереди executor-ом.

Если pushes растет быстрее, чем pops, а netgap_gateway_queue_size увеличивается, это обычно означает, что executor или целевые сервисы не успевают обрабатывать текущую нагрузку.

Метрики пула соединений gateway

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

МетрикаТипЧто показывает
netgap_gateway_connection_pool_insertscounterСколько соединений было добавлено в пул ожидания.
netgap_gateway_connection_pool_removescounterСколько соединений было извлечено из пула при доставке ответа.
netgap_gateway_connection_pool_expirescounterСколько соединений истекло по таймауту ожидания.
netgap_gateway_connection_pool_closedcounterСколько соединений было закрыто.

Рост netgap_gateway_connection_pool_expires обычно требует проверки latency, доступности executor и времени ответа целевых сервисов.

Метрики netgap-executor

Executor получает запросы из gateway, выполняет HTTP-вызовы в приватной зоне и возвращает ответы обратно. Метрики executor показывают фактическую обработку запросов и ошибки вызова целевых сервисов.

МетрикаТипЧто показывает
netgap_executor_requestscounterКоличество запросов, полученных executor для обработки.
netgap_executor_errorscounterКоличество ошибок на стороне executor.
netgap_executor_processing_time_secondshistogramПолное время обработки запроса executor-ом.
netgap_executor_target_call_time_secondshistogramВремя HTTP-вызова целевого сервиса из executor.

Если netgap_executor_errors растет вместе с увеличением netgap_executor_target_call_time_seconds, вероятная причина находится на стороне целевого сервиса или сетевого пути до него.

Примеры PromQL

Скорость входящих запросов на gateway за последние 5 минут:

rate(netgap_gateway_requests[5m])

Скорость ошибок gateway:

rate(netgap_gateway_errors[5m])

95-й перцентиль полной latency gateway:

histogram_quantile(0.95, rate(netgap_gateway_total_latency_seconds_bucket[5m]))

95-й перцентиль времени вызова целевого сервиса executor-ом:

histogram_quantile(0.95, rate(netgap_executor_target_call_time_seconds_bucket[5m]))

Разница между поступлением запросов в очередь и их извлечением:

rate(netgap_gateway_request_queue_pushes[5m]) - rate(netgap_gateway_request_queue_pops[5m])

Текущий размер очереди gateway:

netgap_gateway_queue_size

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

Результат работы метрик — Prometheus endpoint /metrics, который отдает текущий набор метрик Netgap в текстовом формате Prometheus. Приложение не отправляет метрики в Prometheus самостоятельно: Prometheus опрашивает endpoint по своему расписанию.

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

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

  • алерты по росту ошибок gateway или executor;
  • контроль backlog через размер очереди и разницу pushes/pops;
  • анализ latency отдельно для Netgap и целевого сервиса;
  • выявление таймаутов клиентских соединений через метрики connection pool;
  • оценка пропускной способности и планирование ресурсов;
  • сравнение поведения разных версий Netgap при нагрузочном тестировании.