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.
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.
01
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.
02
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.
03
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.
04
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.
05
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 }
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 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.
Como testar qual receiver um alerta corresponde no Alertmanager?
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 que o amtool config routes test faz?
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.
Por que meu alerta do Alertmanager está indo para o receiver errado?
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".
Como funciona a flag continue no roteamento do Alertmanager?
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.
Um alerta pode corresponder a mais de um receiver do Alertmanager?
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.
Como testar o roteamento do Alertmanager sem uma instância em execução?
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.
Por que o editor da árvore de rotas do Prometheus mostra a rota errada?
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.
Como o Alertmanager decide qual rota combina primeiro?
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.
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.