Как мониторить Go приложение?

Middle
846 просмотров
AFK Offer AI

Мониторинг Go-приложения строится на трёх столпах: метрики, логи, трейсы. Метрики через Prometheus + Grafana показывают общую картину: RPS, латентность, ошибки. Логи через slog + ELK/Loki дают детали. Трейсы через OpenTelemetry + Jaeger показывают путь запроса.

Go-специфичные вещи для мониторинга:

// 1. pprof — профилирование в реальном времени
import _ "net/http/pprof"
go http.ListenAndServe(":6060", nil)

// 2. runtime метрики runtime.NumGoroutine() // число горутин runtime.ReadMemStats(&m) // память

// 3. expvar — встроенные переменные expvar.NewInt("requests").Add(1)

Минимальный чеклист для прода: health check endpoint, метрики RED (rate, errors, duration), алерты на 5xx > порога, мониторинг горутин (утечки), мониторинг памяти и GC паузы. pprof на отдельном порту для дебага. Если нет денег на инфраструктуру — хотя бы логи с уровнями и health check.

Следующий вопрос

Способы синхронизации в Go?