AppSec.Policy: Metrics Library
Назначение:
Единая библиотека для Prometheus-метрик во всех Go-микросервисах (gRPC, HTTP и т.д.).
Функционал:
-
Общие метрики:
-
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
.
-
-
gRPC Interceptors (unary + stream), обеспечивающие автоматический учёт метрик (счётчики запросов, ошибок, гистограммы времени) при каждом RPC‑вызове.
-
Запуск HTTP-сервера
/metrics
(или встраивание в ваш router):- По умолчанию поднимается на порту, указанном в
InitMetrics(":9100", "service-name")
.
- По умолчанию поднимается на порту, указанном в
-
Возможность подключать кастомные (service-specific) метрики:
- В папке
metrics/custom/<SERVICE_NAME>.go
можно объявлять своиprometheus.NewCounterVec / NewGaugeVec / NewHistogramVec
. - Затем регистрировать их, например
RegisterMyCustomMetrics()
, и использовать в сервисе.
- В папке
Быстрый старт
- Подключить библиотеку:
go get hub.mos.ru/appsecsolutions/appsec-policy/libs/metrics