Описание метрик
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_requests | counter | Количество HTTP-запросов, принятых gateway для обработки. |
netgap_gateway_errors | counter | Количество ошибок обработки на стороне gateway. |
netgap_gateway_processing_time_seconds | histogram | Время обработки запроса в gateway. |
netgap_gateway_total_latency_seconds | histogram | Полная задержка от получения запроса gateway до отправки ответа клиенту. |
netgap_gateway_netgap_latency_seconds | histogram | Задержка внутри компонентов Netgap без времени вызова целевого сервиса. |
netgap_gateway_target_call_time_seconds | histogram | Время вызова целевого сервиса, полученное от executor и отраженное на стороне gateway. |
netgap_gateway_queue_size | gauge | Текущий размер очереди запросов gateway. |
netgap_gateway_connection_pool_size | gauge | Текущий размер пула ожидающих клиентских соединений. |
Метрики очереди gateway
Очередь gateway используется для передачи запросов executor-у. Эти метрики помогают увидеть накопление нагрузки и дисбаланс между поступлением и обработкой запросов.
| Метрика | Тип | Что показывает |
|---|---|---|
netgap_gateway_request_queue_pushes | counter | Сколько запросов было помещено в очередь. |
netgap_gateway_request_queue_pops | counter | Сколько запросов было извлечено из очереди executor-ом. |
Если pushes растет быстрее, чем pops, а netgap_gateway_queue_size увеличивается, это обычно означает, что executor или целевые сервисы не успевают обрабатывать текущую нагрузку.
Метрики пула соединений gateway
Пул соединений хранит клиентские соединения, ожидающие ответа от executor. Эти метрики полезны для контроля жизненного цикла соединений и поиска таймаутов.
| Метрика | Тип | Что показывает |
|---|---|---|
netgap_gateway_connection_pool_inserts | counter | Сколько соединений было добавлено в пул ожидания. |
netgap_gateway_connection_pool_removes | counter | Сколько соединений было извлечено из пула при доставке ответа. |
netgap_gateway_connection_pool_expires | counter | Сколько соединений истекло по таймауту ожидания. |
netgap_gateway_connection_pool_closed | counter | Сколько соединений было закрыто. |
Рост netgap_gateway_connection_pool_expires обычно требует проверки latency, доступности executor и времени ответа целевых сервисов.
Метрики netgap-executor
Executor получает запросы из gateway, выполняет HTTP-вызовы в приватной зоне и возвращает ответы обратно. Метрики executor показывают фактическую обработку запросов и ошибки вызова целевых сервисов.
| Метрика | Тип | Что показывает |
|---|---|---|
netgap_executor_requests | counter | Количество запросов, полученных executor для обработки. |
netgap_executor_errors | counter | Количество ошибок на стороне executor. |
netgap_executor_processing_time_seconds | histogram | Полное время обработки запроса executor-ом. |
netgap_executor_target_call_time_seconds | histogram | Время 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 при нагрузочном тестировании.