Мониторинг 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.