Saltar al contenido

Alertmanager Route Tester · Observabilidad

Probador de rutas de Alertmanager: ve a qué receiver llega una alerta antes de que avise a nadie.

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.

Se ejecuta en tu navegador: nada de lo que pegas sale de esta página. Cómo lo demostramos

Se ejecuta en tu navegador Sin registro Fiel al enrutamiento Actualizado el 29 jul 2026

Playground del Alertmanager Route Tester

alertmanager.yml · route

Paste a route tree or full config — runs entirely in your browser.

alert labels · key=value

One label per line, e.g. severity=critical.

Tip: press Esc to release keyboard focus from an editor.

Matched receivers

Load an example or paste a route tree and an alert’s labels, then run to see which receiver(s) the alert reaches.

La brecha

Depurar las rutas de Alertmanager es difícil: un árbol de routing es código que no puedes recorrer paso a paso.

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.

Consulta las reglas de enrutamiento que modela, o prueba el playground en vivo de arriba.

El pipeline

Cómo funciona.

Cinco pasos deterministas se ejecutan de principio a fin en cada evaluación — todos dentro de la pestaña de tu navegador, cada vez.

  1. 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.

  2. 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.

  3. 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.

  4. 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—.

  5. 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 el enrutamiento.

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 }

Solución

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

Las regex están completamente ancladas

matchers

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 ejemplo completo de enrutamiento en la documentación de Alertmanageruna raíz con receiver y los hijos team-X / team-Y / database — se carga como el primer ejemplo en el playground.

Sigue adelante

Prueba el resto de tu pipeline de alertas.

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.

FAQ

Tus preguntas, respondidas.

Toca una pregunta para desplegar la respuesta.

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.

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.

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.

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.

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.

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.

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.

39 herramientas gratuitas, todas pueden funcionar sin conexión — opscanopy.com funciona sin registro y sin subir nada.

Herramientas relacionadas: el probador de relabel de Prometheus y el probador de reglas de alerta de Loki. Explora el directorio completo de herramientas.

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.