Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про CI/CD: prometheus, rate, increase

Как с помощью метрик типа counter формировать данные для последующего отображения в Grafana?

Этот вопрос проверяет понимание, как использовать счётчики Prometheus (counter) и превращать их в полезные графики и дашборды в Grafana.

Короткий ответ

Метрики типа counter в Prometheus всегда растут (или обнуляются при рестарте), поэтому в Grafana обычно строят графики не по “сырым” значениям, а по их производным — с помощью функций rate() или increase(). Это позволяет получать, например, число запросов в секунду или количество ошибок за интервал. В Grafana настраивают запросы на Prometheus (через PromQL), выбирают нужный временной интервал и строят графики/панели. Таким образом, счётчики превращаются в наглядные показатели нагрузки и ошибок.

Длинный ответ

Метрика типа counter — базовый тип в Prometheus.
Она монотонно возрастает (только увеличивается) и может сбрасываться при рестарте процесса. Это идеально подходит для счёта событий: запросов, ошибок, задач.


Пример счётчика в приложении

python

from prometheus_client import Counter

REQUESTS_TOTAL = Counter(
    "http_requests_total",
    "Total HTTP requests",
    ["method", "status"]
)

def handle_request(method, status):
    REQUESTS_TOTAL.labels(method=method, status=status).inc()

В метрике будем получать строки вида:

text

http_requests_total{method="GET",status="200"}  1243
http_requests_total{method="GET",status="500"}  12

Почему нельзя просто рисовать “сырые” значения

Если просто построить график http_requests_total, он будет монотонно расти — это не очень полезно.
Нас обычно интересует скорость событий: запросов в секунду, ошибок в минуту и т.д.


Использование rate() и increase()

В PromQL есть две ключевые функции:

  • rate(counter[5m]) — средняя скорость роста метрики за последние 5 минут;

  • increase(counter[5m]) — суммарный прирост за интервал.

Примеры запросов для Grafana:

  1. Запросов в секунду:

text

rate(http_requests_total[5m])
  1. Количество 500-х ответов в минуту:

text

increase(http_requests_total{status="500"}[1m])

Использование в Grafana

В Grafana при создании панели:

  1. Выбираем источник данных: Prometheus.

  2. Вводим PromQL-запрос, например:

    text

    sum(rate(http_requests_total[5m])) by (status)
    
  3. Настраиваем визуализацию (график, столбцы, single stat).

  4. Опционально добавляем пороги (thresholds) и алерты.


Практический сценарий

  • http_requests_total — общий счётчик запросов.

  • Графики в Grafana:

    • “Requests per second” → sum(rate(http_requests_total[1m]))

    • “5xx per minute” → sum(increase(http_requests_total{status=~"5.."}[1m]))

    • “Error rate %” → отношение ошибок к общему числу запросов.


Вывод

Счётчик (counter) сам по себе — просто число. Смысл появляется, когда ты используешь функции rate() и increase() и строишь на их основе панели в Grafana. Это стандартный способ получать понятные метрики вроде “запросы в секунду” и “ошибки в минуту”.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • CI/CD

    CI/CD

Ключевые слова

#prometheus

#rate

#increase

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.