Chuleta de PromQL: consultas comunes con ejemplos

Expresiones PromQL listas para tareas habituales de monitorización: rate sobre contadores, agregaciones, cuantiles a partir de histogramas, top-N y plantillas de alertas. Cópialas y adáptalas a tus métricas.

Selectores y matchers

http_requests_total{job="api", code=~"5.."}
  • = coincidencia exacta, != negación
  • =~ coincidencia regex, !~ negación regex

Rate sobre contadores

sum(rate(http_requests_total[5m])) by (code)

rate() es para contadores (monótonos). La ventana [5m] debe cubrir al menos 4 scrapes.

Agregaciones

avg by (instance) (node_load1)
topk(5, sum by (pod) (container_memory_working_set_bytes))

Cuantiles a partir de histogramas

histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

Agrupa por le solo dentro de histogram_quantile.

Tasa de errores

sum(rate(http_requests_total{code=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))

Plantillas de alertas

# Host caído
up{job="node"} == 0

# CPU por encima del 90% durante cinco minutos
avg by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])) > 0.9

# El disco se llenará pronto
predict_linear(node_filesystem_avail_bytes[6h], 4*3600) < 0

Consejos

  • increase(x[1h]) — crecimiento total del contador en una hora
  • irate() para gráficos ágiles, rate() para alertas
  • Filtra primero por labels y agrega después — más barato en cardinalidad