Метрики (Prometheus)

Тема дорожной карты · Node.js

Сбор метрик в серверных приложениях Node.js предполагает инструментирование JavaScript-среды выполнения для предоставления количественных данных о производительности — частоте запросов, задержках ответов, количестве ошибок и потреблении памяти кучи — в формате, который системы мониторинга, такие как Prometheus, могут собирать и хранить. Npm-пакет prom-client является стандартной библиотекой для предоставления совместимых с Prometheus метрик из процесса Node.js; он включает встроенные коллекторы для метрик Node.js по умолчанию (collectDefaultMetrics()), охватывающих задержку цикла событий, process.memoryUsage(), продолжительность сборки мусора и утилизацию пула потоков libuv. Пользовательские метрики приложения определяются с помощью объектов счётчиков, датчиков, гистограмм и сводок prom-client — например, гистограмма http_request_duration_seconds с метками method, route и status_code позволяет строить дашборды процентилей задержки в Grafana для Express.js API. Эндпоинт метрик (как правило, GET /metrics) регистрируется как маршрут Express.js и должен быть закрыт от публичного доступа — либо через прослушивание на отдельном внутреннем порту, либо с помощью требования секретного заголовка. Сочетание метрик Prometheus для Node.js со структурированными логами pino и распределённой трассировкой (OpenTelemetry) образует «три столпа наблюдаемости» для продакшн-сервисов Node.js.

Как это работает

Метрики (Prometheus) имеет три столпа в Node: метрики (Prometheus-style counters/histograms через prom-client), логи (структурированный JSON через pino/winston, отправляется в Loki/Elastic), distributed tracing (OpenTelemetry SDK + exporter в Jaeger/Tempo). Node имеет встроенные performance hooks (perf_hooks), HTTP request/response события, async-local-storage (node:async_hooks) для request-scoped контекста. Всегда логируйте trace ID на каждую строку для корреляции.

Когда применять

Структурированное логирование — с первого дня; pino — современный дефолт (быстрее winston, JSON-first). Prometheus-эндпойнт (/metrics) — на любой сервис с реальным трафиком. OpenTelemetry tracing — когда сервисов больше одного или хотите дебажить latency через границы. Алёрты на event-loop lag, HTTP error rate, рост памяти — ловят баги, на которые "приложение работает нормально".

Типичные ошибки

Ловушки Метрики (Prometheus): console.log повсюду в production (без структуры, дорого grep-ать, без уровней); логирование секретов (карты, токены); high-cardinality метрики (request-id убивает Prometheus); tracing без sampling (трейсы перегружают backend); нет политики retention для логов (диск забивается, история теряется). Observability — фича, не afterthought.

Связанные понятия

Полезные ресурсы