> Какую метрику Prometheus использовать для подсчета RPS сервера (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Aston

Стек: Go

> Пример ответа

Для подсчёта RPS (requests per second) в Prometheus на Go лучше всего использовать гистограмму или счётчик с последующим вычислением rate.

Рекомендуемая метрика: prometheus.CounterVec с лейблами (например, method, endpoint, status). Затем на стороне Prometheus применяется функция rate():

GO
var httpRequestsTotal = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total number of HTTP requests",
},
[]string{"method", "endpoint", "status"},
)

В коде инкрементируйте счётчик после обработки запроса:

GO
httpRequestsTotal.WithLabelValues(r.Method, r.URL.Path, strconv.Itoa(statusCode)).Inc()

В PromQL для получения RPS используйте:

rate(http_requests_total[1m])

Если нужна информация о латентности (например, для SLA), добавьте гистограмму http_request_duration_seconds. Она автоматически даёт квантили и может использоваться для расчёта RPS через rate(http_request_duration_seconds_count[1m]).

Почему не gauge? Gauge показывает мгновенное значение, а для RPS требуется усреднение по окну времени - это задача rate() на счётчике.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью