Prometheus Rule Builder
DevOps & SRE Telemetry Automation

Gerador de Regras de Alerta e Gravação Prometheus (PromQL) - Guia do Desenvolvedor

Construa e valide visualmente regras de alerta PromQL, regras de gravação (recording rules), limites, rótulos e anotações de runbook.

Prometheus 2.x • K8s Operator CRD • Promtool
Predefinições:
Configuração de regra e 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."
Arquitetura de regrasalert
HostHighCpuLoad

Group: infrastructure_node_alerts | For: 5m

Análise do PromQLValid
Rate Counter

Range: Windowed | Annotations: 3 vars

Compatibilidade de ferramentas100% Native
Prometheus 2.x & K8s

kube-prometheus-stack • Alertmanager • promtool

AST do PromQL e síntese de expressões

Construa visualmente expressões PromQL robustas com seletores de métricas, janelas de intervalo, funções de agregação e limites de comparação.

Privacidade 100% no navegador

Zero comunicação com servidores ou telemetria. Seus nomes de métricas internas, topologias de cluster e URLs de runbook permanecem privados no seu navegador.

Nativo para Promtool e Operator

Gera arquivos de regras padrão do Prometheus 2.x, CRDs PrometheusRule para kube-prometheus-stack e especificações de testes unitários do promtool.

Referência técnica e guia de arquitetura

Gerador de Regras de Alerta e Gravação Prometheus (PromQL) - Guia do Desenvolvedor — Guia de referência

Construa e valide visualmente regras de alerta PromQL, regras de gravação (recording rules), limites, rótulos e anotações de runbook.

Parâmetros principais e controles

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

Especifica se o bloco YAML define uma regra de alerta (`alert: Name`) disparada por violação de limite ou uma regra de gravação pré-computada (`record: metric:name`).

Padrão: HighCpuUsage
Expressão PromQL (`expr`)string (sintaxe PromQL)

A consulta PromQL avaliada em cada intervalo de avaliação para disparar o alerta ou calcular a série temporal gravada.

Padrão: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
Duração Pendente (`for`)string de duração (ex: 5m, 10m, 1h)

O período contínuo em que a condição deve permanecer verdadeira antes de transicionar do estado `Pending` para `Firing`, evitando falsos positivos por oscilações temporárias.

Padrão: 5m
Rótulos (`labels`)mapa chave-valor

Pares chave-valor de metadados anexados ao alerta usados para roteamento no Alertmanager, agrupamento de notificações, silenciamento e classificação de severidade.

Padrão: severity: warning, team: sre
Anotações (`annotations`)mapa chave-valor (suporta templates Go)

Informações legíveis por humanos contendo resumo, descrição e URLs de runbook, com suporte para variáveis de interpolação Go como `{{ $labels.instance }}` e `{{ $value }}`.

Padrão: summary: "High CPU load on {{ $labels.instance }}"

Dicas profissionais e melhores práticas

Otimize consultas pesadas com Regras de Gravação (Recording Rules)

Pré-compute agregações complexas ou taxas sobre janelas longas (ex: `rate(http_requests_total[1h])`) utilizando regras de gravação no formato `level:metric:operations` para acelerar dashboards e manter baixa a latência de avaliação.

Formate valores numéricos em anotações com filtros de template Go

Evite exibir números decimais extensos como 0.85231999999 em notificações. Utilize filtros como `{{ $value | humanizePercentage }}` ou `{{ $value | printf "%.2f" }}` para alertas limpos e de fácil compreensão.

Controle o efeito de oscilação (Flapping) com durações `for` bem calibradas

Defina `for: 5m` a `15m` para métricas sujeitas a oscilações normais (uso de CPU, I/O de disco, pausas de GC), enquanto sondas de disponibilidade (Blackbox exporter) devem ter tolerâncias menores, como `for: 1m`.

Automatize a validação estática de regras com `promtool` no CI/CD

Adicione o comando `promtool check rules rules.yml` à sua pipeline de integração contínua para capturar erros de sintaxe YAML, consultas PromQL inválidas e variáveis de template não declaradas antes do deploy.

Problemas comuns e solução de problemas

O alerta permanece constantemente no estado `Pending` e nunca transiciona para `Firing`

Verifique se a métrica cai pontualmente abaixo do limite configurado durante a janela de avaliação. Se a expressão for avaliada como falsa em um único ciclo, o contador de espera volta a zero. Certifique-se também de que o `evaluation_interval` do Prometheus seja inferior à duração `for`.

Erro ao renderizar anotação: "template: rule: function not defined"

O Prometheus suporta apenas um conjunto específico de funções de template Go (como `humanize`, `humanize1024`, `humanizeDuration`, `humanizePercentage`, `title`, `toUpper`, `toLower`). Remova funções customizadas e acesse variáveis por meio de `$labels.key` ou `$value`.

Nenhum alerta é disparado quando um serviço monitorado trava completamente

Consultas normais como `http_requests_total > 100` retornam um vetor vazio quando o endpoint para de responder. Para detectar falhas totais e nós inoperantes, configure regras separadas usando `absent(up{job="api"}) == 1` ou verificando `up{job="api"} == 0`.

Perguntas frequentes (FAQ)

Qual é a principal diferença entre uma Regra de Alerta e uma Regra de Gravação no Prometheus?▼

Uma Regra de Alerta avalia uma consulta PromQL e despacha eventos de notificação para o Alertmanager quando a condição é atendida pelo tempo configurado. Uma Regra de Gravação pré-calcula consultas PromQL pesadas e salva o resultado como uma nova série temporal no TSDB.

Como os rótulos declarados na regra interagem com os rótulos originais da métrica?▼

Os rótulos definidos no bloco `labels` da regra mesclam-se com os rótulos retornados pela expressão. Em caso de colisão no nome de uma chave, o valor especificado na regra de alerta sobrescreve o valor original da série temporal.

É possível utilizar subconsultas (subqueries) PromQL em expressões de alerta?▼

Sim, subconsultas como `rate(http_requests_total[5m])[30m:1m]` são válidas, porém exigem alto consumo de memória e CPU durante a avaliação. A prática recomendada é calcular a taxa interna previamente com uma regra de gravação.

Como escrever testes unitários automatizados para regras do Prometheus?▼

Utilize o comando nativo `promtool test rules test.yml`. Você pode simular séries temporais com carimbos de data/hora específicos e validar se um alerta atinge o status `pending` ou `firing` conforme esperado.

Qual é a convenção recomendada para estruturação de grupos de regras (Rule Groups)?▼

Estruture as regras por serviço, equipe ou domínio de falha (ex: `groups: - name: node_exporter_alerts`). Você também pode definir intervalos de avaliação específicos (`interval`) para cada grupo de acordo com a criticidade.

Ferramentas e utilitários relacionados

Todas as ferramentas →
Guia do Desenvolvedor: Gerador de Tipos de Resolver TypeScript a partir de GraphQL SDLdeveloper

Gere interfaces de resolver TypeScript fortemente tipadas, argumentos de query/mutation e tipos de contexto a partir de esquemas GraphQL SDL.

Abrir ferramenta→
Guia do Desenvolvedor: Conversor de cURL para C# (.NET HttpClient, RestSharp e Flurl)developer

Converta comandos cURL em código C# idiomático para .NET HttpClient, RestSharp ou Flurl.Http com padrões assíncronos e melhores práticas de pool de conexões.

Abrir ferramenta→
Guia do Desenvolvedor: Conversor de cURL para Java (Java 11+ HttpClient, OkHttp e Spring WebClient)developer

Converta comandos cURL em requisições HTTP Java prontas para produção com java.net.http.HttpClient nativo, OkHttp3 ou Spring WebClient.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Definições JSON para XML Schema (XSD)developer

Infira esquemas XML (XSD), estruturas de tipos complexos, atributos e regras de ocorrência minOccurs/maxOccurs a partir de dados JSON.

Abrir ferramenta→
Gerador Interativo de Arquivos .gitignore (Node, Python, Go, Rust, Java) Guia do Desenvolvedordeveloper

Gere modelos .gitignore abrangentes combinando regras para sistemas operacionais, IDEs e mais de 50 linguagens de programação.

Abrir ferramenta→
Sintaxe Crontab e Expressões Quartz Cheat Sheetdeveloper

Manual completo da sintaxe cron POSIX de 5 campos e Quartz de 6 campos. Macros, intervalos de execução e controle de sobreposição de tarefas.

Abrir ferramenta→