Pular para o conteúdo

Alertmanager Route Tester: Veja qual receiver corresponde antes de o alerta acionar alguém.

Roda no seu navegador — nada do que você cola sai desta página. Como comprovamos isso

Playground do Alertmanager Route Tester

Example
alertmanager.yml · route
# Adapted from the Alertmanager routing example.
route:
  receiver: 'default-receiver'
  group_by: ['alertname', 'cluster', 'service']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  routes:
    - receiver: 'team-X-mails'
      match:
        team: frontend
    - receiver: 'team-DB-pages'
      match:
        service: database
      group_by: ['alertname', 'cluster', 'database']
    - receiver: 'team-Y-mails'
      match:
        team: backend
alert labels · key=value
alertname=HighLatency
service=database
cluster=eu-west-1
severity=critical

Paste a route tree or full config. One label per line, e.g. severity=critical.

Results update as you type — press ⌘/Ctrl + Enter to run now. Press Esc to release the editor.

fig. 25 — alertmanager-route-tester · observability 1 receiver · team-DB-pages
Matched receivers
team-DB-pages
rootteam-DB-pages
group_by [alertname, cluster, database]group_wait 30sgroup_interval 5mrepeat_interval 4h

Este testador de rotas do Alertmanager online deixa você colar uma árvore de rotas e as labels de um alerta de exemplo, e então percorre a árvore do jeito que o Alertmanager faz: receiver(s) correspondente(s), o caminho da rota, o comportamento do continue e o agrupamento efetivo. Descubra na hora qual receiver corresponde ao alerta, direto no seu navegador.

A lacuna

Por que um alerta chega ao receiver errado do Alertmanager.

Uma rota do Alertmanager é uma árvore de decisão e, como qualquer árvore, é fácil de errar de forma sutil: uma regra ampla colocada acima de uma específica a esconde silenciosamente, um continue faltando impede que a equipe de plantão seja acionada algum dia, e uma regex não ancorada quietamente não combina com nada.

A forma usual de descobrir é disparar um alerta de verdade e observar onde ele cai — lento, ruidoso e arriscado em um ambiente ao vivo. O próprio visualizador da árvore de roteamento do Alertmanager ajuda, mas você ainda tem que raciocinar de cabeça sobre match vs. match_re vs. matchers, a ordenação de first-match e a herança. Veja a referência de route e a sintaxe de matcher oficiais.

Este testador faz o percurso por você: cole a árvore e um conjunto de labels para depurar rotas do Alertmanager e testar os matchers contra labels reais. Ele reporta o(s) receiver(s) que um alerta alcança com o caminho completo e o agrupamento efetivo — nada instalado, nada enviado, nada subido para servidor.

Veja as regras de roteamento que ele modela, ou experimente o playground ao vivo acima.

O pipeline

Como testar o roteamento do Alertmanager sem amtool.

Cinco passos determinísticos pegam a sua árvore de rotas e os labels de um alerta e resolvem o receiver de ponta a ponta em cada avaliação — tudo dentro da aba do seu navegador, sem amtool e sem uma instância do Alertmanager rodando.

  1. Analisa a configuração.

    Seu YAML é analisado e a árvore de rotas é resolvida — um alertmanager.yml completo usa o bloco route: dele, um objeto de rota puro é tomado como a raiz. Os erros de análise são reportados, não lançados.

  2. Lê as labels.

    As linhas key=value do alerta viram um conjunto de labels. Uma label ausente é tratada como string vazia, exatamente como o Alertmanager a compara.

  3. Percorre a árvore.

    Partindo da raiz que sempre combina, as rotas filhas são avaliadas em ordem. O alerta desce para a primeira filha correspondente; um continue: true mantém as irmãs seguintes em jogo.

  4. Resolve a herança.

    Em cada match terminal, o receiver e os campos de agrupamento/timer são resolvidos a partir do ancestral mais próximo que os definiu — os valores que o Alertmanager de fato usaria.

  5. Mostra os receivers.

    Cada receiver que o alerta alcança é listado com o caminho da sua rota, uma marcação de continue quando relevante, e o group_by efetivo.

Regras de roteamento

As 4 regras que decidem qual receiver recebe o alerta.

O testador reproduz exatamente essa semântica do Alertmanager. Cada uma abaixo mostra a armadilha e a solução.

A primeira correspondência vence (a menos que haja continue)

ordem

Dentro de uma rota correspondente, as filhas são avaliadas de cima para baixo. O alerta toma a PRIMEIRA irmã correspondente e para — as irmãs seguintes são puladas, a menos que continue: true esteja definido.

Armadilha

route
# Order matters — the broad rule above shadows the specific one
routes:
  - receiver: catch-all          # matches everything below
    matchers: ['severity=~".*"']
  - receiver: db-pager           # NEVER reached
    match: { service: database }

Solução

route
# Specific first, broad last — or use continue
routes:
  - receiver: db-pager
    match: { service: database }
  - receiver: catch-all
    matchers: ['severity=~".*"']

continue: true → múltiplos receivers

fan-out

Uma rota correspondente com continue: true não interrompe a varredura das irmãs, então o alerta também pode cair em uma rota posterior. Use isso para espelhar alertas críticos para um receiver de auditoria ou de paging.

Armadilha

route
# Without continue, only the audit receiver fires —
# the owning team is never paged
routes:
  - receiver: all-critical-audit
    matchers: ['severity="critical"']
  - receiver: team-backend
    match: { team: backend }

Solução

route
# continue: true lets BOTH fire
routes:
  - receiver: all-critical-audit
    matchers: ['severity="critical"']
    continue: true
  - receiver: team-backend
    match: { team: backend }

As regexes são totalmente ancoradas

matchers

O Alertmanager envolve todo padrão match_re e =~/!~ como ^(?:…)$. Um padrão parcial nunca combina com o valor inteiro — uma causa frequente de "minha rota não está combinando".

Armadilha

matchers
# 'staging' only matches the value EXACTLY "staging"
matchers:
  - env=~"staging"      # env=staging-eu does NOT match

Solução

matchers
# Cover the rest of the value explicitly
matchers:
  - env=~"staging-.*"   # env=staging-eu matches

O agrupamento é herdado árvore abaixo

agrupamento

group_by, group_wait, group_interval e repeat_interval fluem de um pai para qualquer filha que não defina o seu próprio. A folha que você vê pode não ser o agrupamento que se aplica.

Armadilha

route
# This leaf has no group_by of its own…
route:
  group_by: ['alertname', 'cluster']
  routes:
    - receiver: db-pager
      match: { service: database }
      # …so it INHERITS [alertname, cluster]

Solução

route
# Override only where the subtree needs it
route:
  group_by: ['alertname', 'cluster']
  routes:
    - receiver: db-pager
      match: { service: database }
      group_by: ['alertname', 'cluster', 'database']

O exemplo completo de roteamento na documentação do Alertmanager — um receiver raiz com filhas team-X / team-Y / database — carrega como o primeiro exemplo no playground.

Continue

Teste o resto do seu pipeline de alerting.

O roteamento é o último salto. Acerte as labels na origem — faça o relabel delas conforme são coletadas, e prove que as suas regras de alerta disparam — e a árvore de rotas acima terá as labels certas para trabalhar.

FAQ

Suas perguntas, respondidas.

Toque em uma pergunta para expandir a resposta.

Cole a sua árvore de rotas (ou um alertmanager.yml completo — apenas o bloco route dele é lido) e as labels de um alerta de exemplo neste testador de rotas do Alertmanager online. Ele reproduz o percurso de roteamento do Alertmanager dentro do navegador e mostra qual receiver, ou quais receivers, o alerta alcançaria, o caminho exato da rota desde a raiz até o nó correspondente, se um continue: true fez disparar mais de um receiver, e o group_by efetivo após a herança. É uma simulação do despacho, sem enviar uma única notificação, então você descobre qual receiver corresponde ao alerta no Alertmanager antes de ele acionar alguém.

O amtool config routes test resolve a árvore de rotas do seu alertmanager.yml contra um conjunto de matchers de label e imprime os receivers que um alerta atingiria, espelhando como o Alertmanager em execução despacha. Esta página é um amtool routes test online no navegador: faz o mesmo percurso na árvore de rotas no lado do cliente, então você consegue testar o roteamento do Alertmanager sem instalar o amtool nem apontá-lo para uma config ao vivo. Cole a árvore, cole as labels e leia os receivers correspondentes e o caminho.

Quase sempre é ordem de rotas, uma regex não ancorada ou um continue faltando. Dentro de uma rota correspondente, as irmãs são avaliadas de cima para baixo e só a primeira correspondência é tomada — então uma regra ampla colocada acima de uma específica a esconde silenciosamente. Os padrões match_re e =~ são totalmente ancorados, então env=~"staging" nunca combina com staging-eu. Use este recurso para depurar rotas do Alertmanager: percorra a árvore contra as labels exatas e veja qual nó de fato combinou, o que deixa óbvia a resposta para "por que meu alerta está indo para o receiver errado".

Por padrão, assim que um alerta combina com uma rota em uma lista de irmãs, o Alertmanager para de varrer o restante daquela lista. Definir continue: true em uma rota correspondente diz ao Alertmanager para continuar avaliando também as irmãs seguintes, para que o alerta possa cair em mais de um receiver — a forma usual de as equipes espelharem todo alerta crítico para um receiver de auditoria ou de paging enquanto ainda o roteiam para a equipe dona. Ao testar o roteamento do Alertmanager aqui, a ferramenta marca cada receiver que um continue: true produz, para que você veja exatamente quais correspondências vieram do encadeamento.

Sim — mas só quando continue: true está definido em uma rota correspondente. Sem ele, a primeira irmã correspondente vence e a varredura para, então um alerta alcança exatamente um receiver por lista de rotas. Com continue: true, o alerta continua descendo pelas irmãs seguintes e pode se ramificar para vários receivers. Este testador mostra cada receiver na ordem em que dispara, para que você confirme que o fan-out é o que pretendia e veja claramente qual receiver corresponde ao alerta no Alertmanager.

Você não precisa de um Alertmanager em execução, e não precisa do amtool. Este é um testador de rotas do Alertmanager online, grátis e sem instalação: tudo roda 100% no lado do cliente, dentro da aba do seu navegador. Cole a sua árvore de rotas e as labels do alerta para testar a sua config de roteamento e simular o roteamento de alertas do Alertmanager no navegador. Nada é enviado e não há cadastro, então você pode colar com segurança nomes de receivers internos e labels de equipes privadas.

O editor da árvore de rotas do Prometheus visualiza a árvore, mas ainda deixa você raciocinar de cabeça sobre match vs. match_re vs. matchers, a ordenação de first-match e a herança — então ele pode parecer certo enquanto um alerta roteia para outro lugar. Se o editor da árvore de rotas não está combinando com as rotas que você espera, use isto como alternativa: testar os matchers do Alertmanager contra labels online. O testador percorre a semântica real e destaca o caminho correspondente, em vez de apenas desenhar a árvore de rotas do Alertmanager online.

Todo alerta entra pela rota raiz, que é o catch-all. Dentro de uma rota correspondente, as rotas filhas são avaliadas de cima para baixo, e o alerta desce para a primeira filha cujos matchers sejam todos satisfeitos — por exemplo, o primeiro nó que exige uma label severity="critical". Ele continua descendo por aquela subárvore; se uma rota correspondente não tiver nenhuma filha que combine, essa rota é o match terminal e o receiver dela dispara. A regra que as pessoas erram é ordem somada a first-match: apenas a primeira irmã correspondente é tomada, a menos que continue: true esteja definido.

More free, private DevOps tools.

O Alertmanager Route Tester é uma ferramenta dentro do OpsCanopy — uma copa crescente de validadores, conversores e testadores baseados em navegador que nunca tocam um servidor.

42 ferramentas gratuitas, todas capazes de funcionar offline — o opscanopy.com não exige cadastro e não envia nada.

Ferramentas relacionadas: o testador de relabel do Prometheus e o testador de regras de alerta do Loki. Explore o diretório completo de ferramentas.

Não é afiliado, endossado nem patrocinado pelo projeto Prometheus nem pela Cloud Native Computing Foundation. Prometheus e Alertmanager são usados aqui apenas de forma descritiva, para identificar o formato de configuração que esta ferramenta verifica.