Метрики — числовые показатели состояния системы: RPS, латентность, ошибки, потребление памяти. Prometheus — стандарт сбора метрик: твой сервис отдаёт метрики на /metrics, Prometheus периодически их забирает (pull-модель).
var (
requestsTotal = promauto.NewCounterVec(
prometheus.CounterOpts{Name: "http_requests_total"},
[]string{"method", "status"},
)
requestDuration = promauto.NewHistogramVec(
prometheus.HistogramOpts{Name: "http_request_duration_seconds"},
[]string{"method"},
)
)
func handler(w http.ResponseWriter, r *http.Request) {
start := time.Now()
// обработка
requestsTotal.WithLabelValues(r.Method, "200").Inc()
requestDuration.WithLabelValues(r.Method).Observe(time.Since(start).Seconds())
}
Три типа метрик: Counter (только растёт — запросы, ошибки), Gauge (текущее значение — горутины, память), Histogram (распределение — латентность, p50/p95/p99). На практике минимальный набор: RED — Rate, Errors, Duration. Визуализация — Grafana.