Volver a herramientas
Constructor de Consultas PromQL
Crea queries de Prometheus de forma visual sin necesidad de recordar la sintaxis exacta.
¿Qué es PromQL?
PromQL (Prometheus Query Language) es el lenguaje de consulta de Prometheus utilizado para seleccionar y agregar datos de métricas en tiempo real.
- rate() / irate(): Calcula la tasa de cambio por segundo
- sum() / avg() / min() / max(): Funciones de agregación
- by / without: Agrupación por labels específicos
- offset: Consulta datos históricos
Preguntas frecuentes
¿Qué es PromQL y cómo se usa para consultar métricas en Prometheus?
PromQL (Prometheus Query Language) es el lenguaje de consulta de Prometheus para extraer y agregar datos de series temporales. Ejemplo básico: `rate(http_requests_total[5m])` calcula solicitudes por segundo en los últimos 5 minutos. Los selectores filtran métricas: `http_requests_total{status="200", method="GET"}`. Las funciones de agregación como `sum()` o `avg()` combinan series. PromQL permite crear dashboards en Grafana, configurar alertas en Alertmanager y hacer análisis retrospectivos.
¿Cómo calcular el uso de CPU de un contenedor con PromQL?
Para calcular uso de CPU de contenedores: `rate(container_cpu_usage_seconds_total[5m])`. Esto da CPU por segundo. Para porcentaje sobre el total: `rate(container_cpu_usage_seconds_total[5m]) / on() machine_cpu_cores * 100`. Para filtrar un contenedor específico: `rate(container_cpu_usage_seconds_total{name="miapp"}[5m])`. Si usas kubelet: `sum(rate(container_cpu_usage_seconds_total{container!="POD"}[5m])) by (pod)`. La función `irate()` es mejor para series con picos abruptos.
Diferencia entre rate e irate en PromQL ¿cuándo usar cada uno?
`rate()` calcula el aumento promedio por segundo en un rango de tiempo completo: `rate(metric[5m])` divide el incremento total entre 300 segundos, suavizando picos y dando una línea más estable. `irate()` calcula la tasa basada en los dos últimos samples del rango: `irate(metric[5m])`, lo que la hace más sensible a cambios repentinos. Usa `rate()` para paneles de visión general y alertas. Usa `irate()` para gráficos detallados donde cada variación importa.
¿Cómo crear una query PromQL que agrupe por etiquetas con by()?
La cláusula `by()` en PromQL agrupa resultados de agregación por etiquetas específicas. Ejemplo: `sum(rate(http_requests_total[5m])) by (status, method)` suma las peticiones por segundo agrupando por código de estado y método HTTP. `topk(5, max(node_memory_MemAvailable_bytes) by (instance))` muestra las 5 instancias con más memoria disponible. Usa `without()` para excluir etiquetas en lugar de incluirlas.