> Какую метрику Prometheus использовать для подсчета RPS сервера (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Aston
Стек: Go
> Пример ответа
Для подсчёта RPS (requests per second) в Prometheus на Go лучше всего использовать гистограмму или счётчик с последующим вычислением rate.
Рекомендуемая метрика: prometheus.CounterVec с лейблами (например, method, endpoint, status). Затем на стороне Prometheus применяется функция rate():
GOvar httpRequestsTotal = prometheus.NewCounterVec(prometheus.CounterOpts{Name: "http_requests_total",Help: "Total number of HTTP requests",},[]string{"method", "endpoint", "status"},)
В коде инкрементируйте счётчик после обработки запроса:
GOhttpRequestsTotal.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() на счётчике.
> Похожие задачи по Go
Как генерировать короткую ссылку в системе url shortener
Влияют ли индексы на другие запросы кроме ускорения поиска
Приходилось ли писать PromQL запросы
Что такое лимиты и запросы ресурсов в Kubernetes
> Похожие задачи по backend
Как генерировать короткую ссылку в системе url shortener
Влияют ли индексы на другие запросы кроме ускорения поиска
Приходилось ли писать PromQL запросы
Что такое лимиты и запросы ресурсов в Kubernetes
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью