M

Metrics

AppSec.Policy: Metrics Library

Назначение:
Единая библиотека для Prometheus-метрик во всех Go-микросервисах (gRPC, HTTP и т.д.).

Функционал:

  1. Общие метрики:

    • app_requests_total — счётчик всех обработанных запросов; лейблы:
      • service (имя сервиса, например "api-server")
      • method (имя метода или URI, например "/v1/GetUser")
      • protocol (например, "grpc" или "http")
    • app_requests_duration_seconds — гистограмма длительности (latency) запросов в секундах; лейблы: service, method, protocol.
    • app_requests_in_flight — gauge для текущего числа «висящих» в обработке запросов; лейбл: service.
    • app_errors_total — счётчик ошибок; лейблы:
      • service
      • error_type (например, "NotFound", "Internal")
    • app_up — gauge (1 при старте, 0 при остановке), лейбл: service.
  2. gRPC Interceptors (unary + stream), обеспечивающие автоматический учёт метрик (счётчики запросов, ошибок, гистограммы времени) при каждом RPC‑вызове.

  3. Запуск HTTP-сервера /metrics (или встраивание в ваш router):

    • По умолчанию поднимается на порту, указанном в InitMetrics(":9100", "service-name").
  4. Возможность подключать кастомные (service-specific) метрики:

    • В папке metrics/custom/<SERVICE_NAME>.go можно объявлять свои prometheus.NewCounterVec / NewGaugeVec / NewHistogramVec.
    • Затем регистрировать их, например RegisterMyCustomMetrics(), и использовать в сервисе.

Быстрый старт

  1. Подключить библиотеку:
    go get hub.mos.ru/appsecsolutions/appsec-policy/libs/metrics