Ответ
Для комплексного мониторинга Go-сервисов принято выделять несколько ключевых групп метрик, часто опираясь на методологии RED (Rate, Errors, Duration) и USE (Utilization, Saturation, Errors).
-
Метрики приложения (Application Metrics / RED-метод) Это самые важные метрики, отражающие производительность сервиса с точки зрения пользователя.
- Rate (R): Количество запросов в секунду (
http_requests_total
- Counter). - Errors (E): Количество запросов, завершившихся ошибкой (
http_requests_errors_total
- Counter). - Duration (D): Время выполнения запросов (
http_request_duration_seconds
- Histogram).
Пример с метками для детализации:
requestsTotal = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: "http_requests_total", Help: "Total HTTP requests.", }, []string{"method", "path", "status"}, // Метки для анализа )
- Rate (R): Количество запросов в секунду (
-
Runtime-метрики Go Встроенные метрики, которые дают представление о здоровье самого приложения.
go_goroutines
(Gauge): Количество активных горутин (помогает выявлять утечки).go_memstats_alloc_bytes
(Gauge): Текущее использование heap-памяти.go_gc_duration_seconds
(Histogram/Summary): Длительность пауз сборщика мусора (GC).go_threads
(Gauge): Количество потоков ОС.
-
Бизнес-метрики Метрики, привязанные к бизнес-логике приложения.
- Количество регистраций новых пользователей.
- Число обработанных заказов.
- Сумма успешных транзакций.
-
Инфраструктурные метрики Показатели здоровья хоста или контейнера, где запущен сервис.
- CPU/Memory/Disk Usage: Утилизация основных ресурсов.
- Network I/O: Сетевой трафик.
- File Descriptors: Количество открытых файловых дескрипторов.
Сбор и анализ этих метрик в совокупности (например, с помощью Prometheus и Grafana) позволяет построить полную картину состояния сервиса и оперативно реагировать на проблемы.