Практикум Prometheus — типы метрик и PromQL
Четыре типа метрик
| Тип | Смысл | Пример | Запрос |
|---|---|---|---|
| Counter | Монотонно растёт (сброс при рестарте) | http_requests_total | rate(...[5m]) |
| Gauge | Может расти и падать | node_memory_MemAvailable_bytes | значение как есть |
| Histogram | Распределение по bucket | http_request_duration_seconds_bucket | histogram_quantile |
| Summary | Квантили на клиенте | rpc_duration_seconds | реже в новых SDK |
Туториал — Understanding metric types.
Counter — скорость событий
Counter фиксирует «сколько раз произошло». Для графика «запросов в секунду»:
rate(http_requests_total[5m])
rate— средняя скорость за окно, учитывает сброс counter.[5m]— lookback; должно быть ≥2 * scrape_interval.
Сумма по всем instance:
sum(rate(http_requests_total[5m])) by (job)
Фильтр по статусу 5xx:
sum(rate(http_requests_total{status=~"5.."}[5m])) by (job)
Gauge — текущее значение
Загрузка CPU (idle — доля простоя):
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
Свободная память:
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100
Gauge не оборачивают в rate без необходимости.
Histogram — latency и перцентили
Histogram создаёт ряды _bucket, _sum, _count. P99 latency:
histogram_quantile(
0.99,
sum by (le, job) (rate(http_request_duration_seconds_bucket[5m]))
)
le — upper bound bucket; обязателен в sum by.
Селекторы и операторы
# точное совпадение
http_requests_total{job="api", method="GET"}
# regex
http_requests_total{status=~"5.."}
# отрицание
http_requests_total{status!="200"}
# арифметика между рядами (одинаковые labels!)
node_filesystem_avail_bytes / node_filesystem_size_bytes * 100
Recording rules (предвычисление) — в rules/*.yml, подключаются в prometheus.yml:
groups:
- name: example
rules:
- record: job:http_requests:rate5m
expr: sum by (job) (rate(http_requests_total[5m]))
Типовые запросы для инфраструктуры
| Вопрос | PromQL |
|---|---|
| Доступность target | up{job="node"} |
| Диск заполнен >90% | (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 > 90 |
| Ошибки HTTP доля | sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) |
| Scrape тормозит | scrape_duration_seconds > 1 |
PromQL в Grafana
Те же выражения копируются в панели Grafana (шаг 4). Переменные:
sum(rate(http_requests_total{job="$job"}[5m])) by (status)
Ошибки новичков
rateна Gauge — бессмысленно или вводит в заблуждение.- Слишком короткое окно
[1m]при scrape 30s — шум и пропуски. - Агрегация без
by— случайное суммирование разных label sets. - Игнор
_bucket— перцентиль только черезhistogram_quantile.
В UI Prometheus (:9090) выполните запросы из workshop.md (раздел PromQL). Добавьте node_exporter на шаге 5 и постройте график CPU и disk.
Чек-лист
- Объяснить разницу Counter и Gauge на примере
- Написать
rate()для counter иhistogram_quantileдля latency - Отфильтровать метрики по label через regex
Дальше — Grafana.
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Два инструмента, русский UI Grafana 12, windows_exporter, UI-шпаргалки, targets, Explore, дашборд Windows и типичные сбои. Pull-модель, компоненты Prometheus, временные ряды, метки, exporters и Pushgateway — основа перед установкой. Docker Compose на Windows и Linux, Grafana 12 и ru-RU, windows_exporter, provisioning, health check и типичные сбои первого запуска. Проверка provisioned datasource, первая панель up, переменные, Explore, импорт дашбордов — после шага 2. node_exporter, windows_exporter на Windows, blackbox, Pushgateway, client libraries и /metrics. Alerting rules, Alertmanager, маршрутизация, inhibition, Grafana Unified Alerting и туториал по алертам. PLG-расширение — логи в Loki, трейсы в Tempo, долгосрочные метрики в Mimir, LogQL и корреляция в Grafana. Grafana Alloy как единый агент, eBPF-метрики Beyla, RUM Faro и профилирование Pyroscope. OpenTelemetry Collector, инструментирование сервиса, нагрузочный тест k6 с метриками и полный docker-compose observability lab.Как пользоваться
Практикум Prometheus — архитектура и модель данных
Практикум Prometheus — установка и первые метрики
Практикум Grafana — источники данных и дашборды
Практикум Prometheus — экспортёры и инструментирование
Практикум Prometheus — Alertmanager и Grafana Alerting
Практикум — Loki, Tempo и Mimir
Практикум — Alloy, Beyla, Faro и Pyroscope
Практикум — OpenTelemetry, k6 и итоговый стенд