Prometheus Rule Builder
DevOps & SRE Telemetry Automation

Generador de Reglas de Alerta y Registro de Prometheus (PromQL) - Guía para Desarrolladores

Construya y valide visualmente reglas de alerta PromQL, reglas de registro, umbrales, etiquetas y anotaciones de runbook.

Prometheus 2.x • K8s Operator CRD • Promtool
Preajustes:
Configuración de regla y PromQL
Interactive PromQL Builder Assistant
Label Matchers (e.g. {mode="idle"}):
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85Live Assistant
Tier: Range Rate Window
Wait before firing
Prometheus 2.42+ anti-flapping
Warning (P2)
:
:
:
# Prometheus Alerting & Recording Rules Specification
# Generated by ToolsAA (100% Client-Side Engine)
groups:
  - name: infrastructure_node_alerts
    interval: 30s
    rules:
      - alert: HostHighCpuLoad
        expr: 100 - (avg by (instance, job) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
        for: 5m
        keep_firing_for: 2m
        labels:
          severity: warning
          tier: "infra"
          team: "sre-platform"
        annotations:
          summary: "Host CPU utilization exceeds 85% on {{ $labels.instance }}"
          description: "Node {{ $labels.instance }} (job: {{ $labels.job }}) has had CPU utilization above 85% for 5m. Current load is {{ $value | printf \"%.2f\" }}%."
          runbook_url: "https://runbooks.prometheus-operator.dev/runbooks/general/cpu-high-load/"
          dashboard_url: "https://grafana.internal.net/d/node-exporter-full?var-instance={{ $labels.instance }}"
          action_required: "Investigate noisy-neighbor processes via htop or check autoscaling capacity."
Arquitectura de reglasalert
HostHighCpuLoad

Group: infrastructure_node_alerts | For: 5m

Análisis de PromQLValid
Rate Counter

Range: Windowed | Annotations: 3 vars

Compatibilidad de herramientas100% Native
Prometheus 2.x & K8s

kube-prometheus-stack • Alertmanager • promtool

AST de PromQL y síntesis de expresiones

Construya visualmente expresiones PromQL robustas con selectores de métricas, ventanas de rango, funciones de agregación y umbrales de comparación.

Privacidad 100% en el navegador

Cero comunicaciones con servidores o telemetría. Sus nombres de métricas internas, topologías de clúster y URL de runbook permanecen privados en su navegador.

Nativo para Promtool y Operator

Genera archivos de reglas estándar de Prometheus 2.x, CRD PrometheusRule de kube-prometheus-stack y especificaciones de pruebas unitarias para promtool.

Referencia técnica y guía de arquitectura

Generador de Reglas de Alerta y Registro de Prometheus (PromQL) - Guía para Desarrolladores — Guía de referencia

Construya y valide visualmente reglas de alerta PromQL, reglas de registro, umbrales, etiquetas y anotaciones de runbook.

Parámetros clave y controles

Tipo de Regla e Identificadorstring (alert: / record:)

Especifica si el bloque YAML define una regla de alerta (`alert: Name`) activada por umbral o una regla de registro precalculada (`record: metric:name`).

Por defecto: HighCpuUsage
Expresión PromQL (`expr`)string (sintaxis PromQL)

La consulta de métricas evaluada en cada ciclo de evaluación para disparar la alerta o registrar una serie temporal calculada.

Por defecto: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
Duración Pendiente (`for`)cadena de duración (ej. 5m, 10m, 1h)

El tiempo que la condición debe cumplirse de forma ininterrumpida antes de pasar del estado `Pending` a `Firing`, evitando falsos positivos por picos transitorios.

Por defecto: 5m
Etiquetas (`labels`)mapa clave-valor

Metadatos en pares clave-valor asociados a la alerta para enrutamiento en Alertmanager, agrupación de notificaciones, silencios y niveles de severidad.

Por defecto: severity: warning, team: sre
Anotaciones (`annotations`)mapa clave-valor (soporta plantillas Go)

Información descriptiva para humanos (resumen, descripción detallada, URL del runbook) con soporte para interpolación de variables como `{{ $labels.instance }}` y `{{ $value }}`.

Por defecto: summary: "High CPU load on {{ $labels.instance }}"

Consejos profesionales y mejores prácticas

Precalcule consultas pesadas con Reglas de Registro (Recording Rules)

Calcule agregaciones exigentes o tasas en ventanas amplias (ej. `rate(http_requests_total[1h])`) usando reglas de registro con la nomenclatura estándar `level:metric:operations` para optimizar dashboards y la evaluación de alertas.

Formatee valores numéricos en anotaciones con filtros de plantilla Go

Evite notificaciones con números flotantes extensos como 0.85231999999. Utilice filtros como `{{ $value | humanizePercentage }}` o `{{ $value | printf "%.2f" }}` para generar alertas claras y profesionales.

Mitigue el parpadeo de alertas (Flapping) con duraciones `for` adecuadas

Configure `for: 5m` a `15m` para métricas volátiles de recursos (CPU, I/O, pausas de GC), reservando umbrales rápidos como `for: 1m` para sondas sintéticas de disponibilidad (Blackbox exporter).

Automatice la validación de reglas con `promtool` en CI/CD

Integre `promtool check rules rules.yml` en su canal de integración continua para detectar fallos de sintaxis YAML, errores en expresiones PromQL y referencias inválidas a plantillas antes de desplegar a producción.

Errores comunes y solución de problemas

La alerta permanece continuamente en estado `Pending` y nunca cambia a `Firing`

Compruebe si el valor de la métrica desciende momentáneamente por debajo del umbral durante la ventana de evaluación. Si la expresión resulta falsa en un solo ciclo, el temporizador de espera se reinicia a cero. Verifique también que `evaluation_interval` sea inferior a la duración `for`.

Error al renderizar la alerta: "template: rule: function not defined"

Las anotaciones de Prometheus solo admiten funciones predefinidas de plantillas Go (como `humanize`, `humanize1024`, `humanizeDuration`, `humanizePercentage`, `title`, `toUpper`, `toLower`). Verifique que no se utilicen funciones personalizadas y que las variables usen `$labels.key` o `$value`.

No se activan alertas cuando un servicio o nodo monitoreado se cae por completo

Consultas habituales como `http_requests_total > 100` devuelven un vector vacío cuando el destino deja de emitir métricas. Para detectar caídas totales, configure reglas específicas utilizando `absent(up{job="api"}) == 1` o evaluando directamente `up{job="api"} == 0`.

Preguntas frecuentes (FAQ)

¿Cuál es la diferencia entre una regla de alerta y una regla de registro en Prometheus?▼

Una regla de alerta evalúa una expresión PromQL y envía notificaciones a Alertmanager cuando se cumple la condición durante el tiempo estipulado. Una regla de registro precalcula expresiones PromQL complejas y guarda el resultado como una nueva serie temporal en la base de datos TSDB.

¿Cómo interactúan las etiquetas definidas en la regla con las etiquetas de la métrica?▼

Las etiquetas configuradas en la sección `labels` de la regla se fusionan con las etiquetas de la métrica evaluada. En caso de colisión con una misma clave de etiqueta, prevalece el valor definido en la regla de alerta.

¿Se pueden emplear subconsultas PromQL dentro de expresiones de reglas de alerta?▼

Sí, subconsultas como `rate(http_requests_total[5m])[30m:1m]` son sintácticamente válidas, pero incrementan de forma notable el uso de memoria y CPU. La mejor práctica consiste en precalcular la tasa interna mediante una regla de registro.

¿Cómo se redactan pruebas unitarias automatizadas para reglas de Prometheus?▼

Utilice la herramienta nativa `promtool test rules test.yml`. Permite definir series temporales simuladas con marcas de tiempo específicas y verificar si una alerta se encuentra en estado `pending` o `firing` en cada paso.

¿Cuál es la convención recomendada para organizar grupos de reglas (Rule Groups)?▼

Agrupe las reglas por servicio, equipo o dominio de fallo (por ejemplo, `groups: - name: node_exporter_alerts`). Cada grupo puede tener su propio intervalo de evaluación (`interval`) según las necesidades operativas.

Herramientas y utilidades relacionadas

Todas las herramientas →
Guía para Desarrolladores: Generador de Tipos de Resolver TypeScript desde GraphQL SDLdeveloper

Genera interfaces de resolver fuertemente tipadas en TypeScript, argumentos de query/mutation y tipos de contexto a partir de esquemas GraphQL SDL.

Abrir herramienta→
Guía de desarrollo del convertidor de cURL a C# (.NET HttpClient, RestSharp y Flurl)developer

Convierta comandos cURL en código C# idiomático para .NET HttpClient, RestSharp o Flurl.Http con patrones asíncronos y mejores prácticas de agrupación de conexiones.

Abrir herramienta→
Guía de desarrollo del convertidor de cURL a Java (Java 11+ HttpClient, OkHttp y Spring WebClient)developer

Convierta comandos cURL en solicitudes HTTP de Java para producción con java.net.http.HttpClient nativo, OkHttp3 o Spring WebClient.

Abrir herramienta→
Guía para Desarrolladores: Generador de Definiciones JSON a XML Schema (XSD)developer

Inferencia de esquemas XML (XSD), estructuras de tipos complejos, atributos y reglas de cardinalidad minOccurs/maxOccurs a partir de muestras JSON.

Abrir herramienta→
Generador Interactivo de Archivos .gitignore (Node, Python, Go, Rust, Java) Guía para Desarrolladoresdeveloper

Genere plantillas .gitignore completas combinando reglas para sistemas operativos, entornos de desarrollo y más de 50 lenguajes de programación.

Abrir herramienta→
Sintaxis Crontab y Expresiones Quartz Cheat Sheetdeveloper

Guía definitiva de sintaxis cron POSIX de 5 campos y formato Quartz de 6 campos. Macros, cálculo de ciclos de ejecución y prevención de ejecuciones simultáneas.

Abrir herramienta→