Este probador de rutas de Alertmanager te
deja probar el enrutamiento sin tocar tu instancia: pega un árbol de rutas y las etiquetas de una
alerta de ejemplo, y recorre el árbol como lo hace Alertmanager para saber qué receiver coincide —el/los
receiver(s) coincidente(s), el breadcrumb de la ruta, el comportamiento de
continue
y la agrupación efectiva. Al instante, en tu navegador.
La brecha
Por qué una alerta llega al receiver de Alertmanager equivocado.
Una ruta de Alertmanager es un
árbol de decisión, y como cualquier árbol es fácil equivocarse de forma sutil: una regla
amplia colocada por encima de una específica la deja en sombra silenciosamente, un
continue que falta impide que el
equipo de guardia reciba nunca el aviso, y una regex sin anclar no coincide con nada en
silencio.
La forma habitual de averiguarlo es disparar una alerta real y observar dónde aterriza — lento, ruidoso y arriesgado en un entorno en producción. El
propio visualizador del árbol de enrutamiento de Alertmanager ayuda, pero aun así tienes
que razonar sobre
match vs
match_re vs
matchers, el orden de first-match
y la herencia, mentalmente. Consulta la
referencia oficial de route y la
sintaxis de matchers.
Este tester hace el recorrido por ti: es un árbol de routing de Alertmanager online que
te dice qué receiver coincide. Pega el árbol y un conjunto de etiquetas, y te
reporta el/los receiver(s) que alcanza una alerta con la ruta completa y la agrupación
efectiva — nada instalado, nada enviado, nada subido.
Cómo probar el routing de Alertmanager sin amtool.
Cinco pasos deterministas toman tu árbol de rutas y las etiquetas de una alerta y resuelven el receiver de principio a fin en cada evaluación — todo dentro de la pestaña de tu navegador, sin amtool y sin una instancia de Alertmanager en marcha.
01
Analiza la configuración.
Tu YAML se analiza y el árbol de rutas se resuelve —un alertmanager.yml completo usa su bloque route:, un objeto route pelado se toma como la raíz—. Los errores de análisis se reportan, no se lanzan.
02
Lee las etiquetas.
Las líneas clave=valor de la alerta se convierten en un conjunto de etiquetas. Una etiqueta ausente se trata como la cadena vacía, exactamente como la compara Alertmanager.
03
Recorre el árbol.
Empezando por la raíz, que siempre coincide, las rutas hijas se evalúan en orden. La alerta desciende hacia el primer hijo coincidente; un continue: true mantiene en juego a los hermanos posteriores.
04
Resuelve la herencia.
En cada coincidencia terminal, el receiver y los campos de agrupación/temporización se resuelven a partir del ancestro más cercano que los estableció —los valores que Alertmanager usaría de verdad—.
05
Muestra los receivers.
Se lista cada receiver que alcanza la alerta con el breadcrumb de su ruta, una etiqueta de continue cuando corresponde, y el group_by efectivo.
Reglas de enrutamiento
Las 4 reglas que deciden qué receiver recibe la alerta.
El tester reproduce esta semántica de Alertmanager con exactitud.
Cada una de las de abajo muestra la trampa y la solución.
El primero que coincide gana (salvo continue)
orden
Dentro de una ruta coincidente, los hijos se evalúan de arriba abajo. La alerta toma el PRIMER hermano coincidente y se detiene —los hermanos posteriores se omiten salvo que se haya establecido continue: true—.
Trampa
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 }
Solución
route
# Specific first, broad last — or use continue
routes:
- receiver: db-pager
match: { service: database }
- receiver: catch-all
matchers: ['severity=~".*"']
continue: true → varios receivers
fan-out
Una ruta coincidente con continue: true no detiene el escaneo de hermanos, así que la alerta también puede aterrizar en una ruta posterior. Úsalo para replicar las alertas críticas hacia un receiver de auditoría o de paging.
Trampa
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 }
Alertmanager envuelve cada patrón match_re y =~/!~ como ^(?:…)$. Un patrón parcial nunca coincide con el valor entero —una causa frecuente de «mi ruta no coincide»—.
Trampa
matchers
# 'staging' only matches the value EXACTLY "staging"
matchers:
- env=~"staging" # env=staging-eu does NOT match
Solución
matchers
# Cover the rest of the value explicitly
matchers:
- env=~"staging-.*" # env=staging-eu matches
La agrupación se hereda hacia abajo en el árbol
agrupación
group_by, group_wait, group_interval y repeat_interval fluyen desde un padre hacia cualquier hijo que no establezca el suyo propio. La hoja que ves puede no ser la agrupación que se aplica.
Trampa
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]
Solución
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']
El enrutamiento es el último salto. Acierta con las etiquetas en el origen —
reetiquétalas a medida que se hace scraping, y demuestra que tus reglas de alerta se
disparan — y el árbol de rutas de arriba tendrá las etiquetas correctas con las que
trabajar.
¿Cómo pruebo con qué receiver coincide una alerta en Alertmanager?
Pega tu árbol de rutas (o un alertmanager.yml completo —solo se lee su bloque route—) y las etiquetas de una alerta de ejemplo en este probador de rutas de Alertmanager. Reproduce el recorrido de enrutamiento en tu navegador y te muestra qué receiver o receivers alcanzaría la alerta, la ruta exacta —el breadcrumb— desde la raíz hasta el nodo coincidente, si un continue:true hizo que se dispararan varios receivers, y el group_by efectivo con el que termina ese nodo tras la herencia. Es un simulacro del dispatch sin enviar una sola notificación.
¿Qué hace amtool config routes test?
amtool config routes test es el comando oficial para probar el enrutamiento de Alertmanager desde la CLI: le pasas un conjunto de etiquetas y te dice a qué receiver llegaría esa alerta según tu configuración. Es la misma idea que este tester, pero amtool necesita el binario instalado y el archivo a mano, mientras que aquí pegas el árbol de routing de Alertmanager online y obtienes el resultado en el navegador, sin instalar nada. Úsalo para depurar las rutas de Alertmanager rápido y luego confirma con amtool en CI si lo prefieres.
¿Por qué mi alerta de Alertmanager va al receiver equivocado?
Casi siempre es por el orden y el first-match. Dentro de una ruta coincidente, los hijos se evalúan de arriba abajo y solo se toma el primer hermano cuyos matchers se cumplen todos —salvo que se haya puesto continue: true—. Una regla amplia colocada encima de una específica la deja en sombra, y la alerta acaba en el receiver equivocado. La otra causa frecuente es una regex sin anclar: match_re y =~ se anclan por completo, así que staging no coincide con staging-eu. Pega el árbol y las etiquetas en el tester para ver qué receiver coincide de verdad y por qué ruta.
¿Cómo funciona el flag continue en el enrutamiento de Alertmanager?
Por defecto, una vez que una alerta coincide con una ruta dentro de una lista de hermanos, Alertmanager deja de escanear el resto de esa lista. Establecer continue: true en una ruta coincidente le indica a Alertmanager que siga evaluando también los hermanos posteriores, de modo que la alerta pueda aterrizar en más de un receiver. Es la forma en que los equipos replican cada alerta crítica hacia un receiver de auditoría o de paging mientras la siguen enrutando al equipo propietario. El tester muestra cada receiver que produce un continue, etiquetado para que veas qué coincidencias provienen de la caída en cascada.
¿Puede una alerta coincidir con más de un receiver de Alertmanager?
Sí, pero solo si usas continue: true. Sin él, Alertmanager se detiene en el primer hermano coincidente y la alerta llega a un único receiver. Con continue: true en una ruta coincidente, el escaneo continúa por los hermanos posteriores y la misma alerta puede aterrizar en varios receivers a la vez —por ejemplo, en el equipo propietario y en un receiver de auditoría—. Este probador de árbol de routing de Alertmanager lista cada receiver que alcanza la alerta, así ves de un vistazo cuándo una alerta se reparte entre varios.
¿Cómo pruebo el enrutamiento de Alertmanager sin una instancia en marcha?
No necesitas un Alertmanager corriendo ni el binario amtool. Este tester es 100% del lado del cliente: pega el bloque route (o el alertmanager.yml entero) y las etiquetas de la alerta, y evalúa el árbol dentro de la pestaña de tu navegador. Tu árbol de rutas y las etiquetas no se suben a ningún sitio, y no hay cuenta ni registro. Puedes pegar con seguridad configuraciones internas, incluidos nombres de receivers, etiquetas de webhooks con aspecto de secreto y nombres de equipos privados, para depurar las rutas de Alertmanager en local.
¿Por qué el editor del árbol de routing de Prometheus muestra la ruta equivocada?
Suele ser por dos detalles de la semántica de Alertmanager que un visualizador estático no aplica. Primero, la herencia: group_by, group_wait, group_interval y repeat_interval fluyen desde un padre hacia cualquier hijo que no establezca el suyo, así que la hoja que ves puede no reflejar la agrupación real. Segundo, el anclaje de las regex: match_re y =~ se envuelven como ^(?:…)$, de modo que una coincidencia parcial nunca cuenta. Este tester resuelve la herencia y ancla las regex igual que Alertmanager, por eso la ruta que muestra coincide con la que se aplicaría en producción.
Toda alerta entra por la ruta raíz, que es el catch-all. Dentro de una ruta coincidente, las rutas hijas se evalúan de arriba abajo y la alerta desciende hacia el primer hijo cuyos matchers se cumplen todos, siguiendo por ese subárbol. Si una ruta coincidente no tiene ningún hijo que coincida, esa ruta es la coincidencia terminal y se dispara su receiver. La regla clave que la gente confunde es el orden más el first-match: solo se toma el primer hermano coincidente, salvo que se haya establecido continue. Recuerda que match es igualdad exacta, match_re y matchers (severity="critical", env=~"prod-.*", team!="frontend") combinan igualdad, desigualdad y regex anclado, y una ruta solo coincide cuando se cumplen todas las cláusulas.
More free, private DevOps tools.
El Alertmanager Route Tester es una herramienta dentro de
OpsCanopy — una creciente cubierta de validadores,
conversores y probadores basados en navegador que nunca tocan un servidor.
No está afiliado, respaldado ni patrocinado por el proyecto
Prometheus ni por la
Cloud Native Computing Foundation.
Prometheus y Alertmanager se usan
aquí solo de forma descriptiva, para identificar el formato de configuración que esta herramienta comprueba.