Шпаргалка по PromQL: частые запросы с примерами
Готовые PromQL-выражения для типовых задач мониторинга: rate по счётчикам, агрегации, квантили из гистограмм, топ-N и заготовки алертов. Скопируйте и адаптируйте под свои метрики.
Селекторы и матчеры
http_requests_total{job="api", code=~"5.."}=точное совпадение,!=отрицание=~regex-совпадение,!~regex-отрицание
Rate по счётчикам
sum(rate(http_requests_total[5m])) by (code)rate() — для счётчиков (только растут). Окно [5m] должно покрывать минимум 4 скрейпа.
Агрегации
avg by (instance) (node_load1)
topk(5, sum by (pod) (container_memory_working_set_bytes))Квантили из гистограмм
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))Группировать по le нужно только внутри histogram_quantile.
Доля ошибок (error rate)
sum(rate(http_requests_total{code=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))Заготовки алертов
# Хост недоступен
up{job="node"} == 0
# CPU выше 90% пять минут
avg by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])) > 0.9
# Скоро кончится диск
predict_linear(node_filesystem_avail_bytes[6h], 4*3600) < 0Подсказки
increase(x[1h])— суммарный прирост счётчика за часirate()— для быстрых графиков,rate()— для алертов- Сначала фильтруйте лейблами, потом агрегируйте — так дешевле по кардинальности