En este artículo exploraremos cómo IOMETRICS® Alerta lleva la monitorización de infraestructura al siguiente nivel. Construido sobre la base de Alerta.io este gestor centralizado de eventos supera las limitaciones del modelo original añadiendo capacidades como deduplicación flexible, ejecución asíncrona de plugins y remediación automática. Descubre cómo su nueva arquitectura te permite dominar grandes volúmenes de alertas de forma más eficiente, enriqueciendo su contexto y reduciendo significativamente la necesidad de intervención manual.
¿Qué ofrece Alerta.io de serie?
Alerta.io es un sistema de monitorización pensado para consolidar y deduplicar alertas de múltiples fuentes (Zabbix, Prometheus, Elastic, Grafana, etc.) ofreciendo una vista unificada del estado de la infraestructura. Su modelo de alerta es flexible: define campos estándar, pero permite ampliarlos con atributos personalizados y tags, de forma que se adapta fácilmente a formatos de origen heterogéneos mediante webhooks.
El sistema es modular: soporta diferentes backends de base de datos (PostgreSQL, MongoDB), ofrece una API REST central, una web UI basada en Vue.js, una gestión básica de tareas asíncronas usando Celery + Redis para ejecutar operaciones sobre conjuntos grandes de alertas, y una CLI en Python para gestionar alertas desde línea de comandos.
La gestión avanzada se articula a través de plugins que se ejecutan en distintos puntos del ciclo de vida de la alerta (pre-receive, post-receive, cambios de estado, acciones manuales, notas y borrado), lo que permite enriquecer, filtrar o notificar cada evento con lógica a medida.
La potencia real viene de la combinación de tres piezas: el modelo flexible de alertas, los plugins y el módulo de routing que decide qué plugins ejecutar en cada transición de estado. En el diseño original, la ejecución de plugins es síncrona y secuencial: una alerta no termina de procesarse hasta que todos los plugins han acabado, lo que limita la capacidad de procesar grandes volúmenes si hay integraciones lentas (por ejemplo, creación de tickets en Jira o envíos a otras plataformas).
IOMETRICS® Alerta: capa funcional sobre Alerta.io
IOMETRICS® Alerta toma Alerta.io como base para disponer de deduplicación, correlación básica y modelo flexible, y añade un conjunto de módulos Python que extienden su funcionalidad sin modificar el código del proyecto original. Esto permite cubrir casos de uso avanzados que el proyecto original no resuelve o resuelve de forma limitada.
La plataforma introduce un backend específico sobre PostgreSQL (iometrics) que habilita deduplicación más flexible y acceso a tablas adicionales, así como un módulo de routing que extrae la lista de plugins a ejecutar a partir del atributo alerters de cada alerta. Junto a este routing se orquestan módulos para recuperación, blackouts, contextualización, notificación y correlación, de forma que el pipeline de tratamiento de eventos queda totalmente configurable vía plugins.
Además, IOMETRICS® Alerta incorpora APIs adicionales para, por ejemplo, procesar alertas de forma asíncrona de extremo a extremo, para consultar el estado de los “alerters” asociados a una alerta concreta y para gestionar las reglas de contextualización de las alertas.
Funcionalidad clave añadida por IOMETRICS® Alerta
Deduplicación y correlaciones flexibles
La deduplicación original de Alerta.io se basaba en el par recurso/evento, lo que funcionaba bien para ciertos orígenes, pero se quedaba corto para escenarios más complejos. IOMETRICS® Alerta añade la posibilidad de deduplicar por un atributo: si dos alertas comparten el mismo valor en el atributo deduplication y una está activa, la nueva se considerará una deduplicación de la primera independientemente de recurso o evento.
Se mantiene la posibilidad de usar el mecanismo original, el nuevo o ambos, lo que da margen para evolucionar el modelo sin romper integraciones existentes. Además, se introduce el atributo inferredCorrelation: si una alerta llega con este campo poblado con uno o varios IDs de alertas abiertas, el sistema las correlaciona y puede deduplicar contra la alerta con mejor puntuación.
La lógica que rellena inferredCorrelation se delega a proveedores de correlación, que se ejecutan cuando llega una alerta y calculan el porcentaje de correlación con otras alertas abiertas. Existen proveedores de correlación basados en tiempo (cuanto más cercanas en el tiempo, más probabilidad), topología (apoyado en IOMetrics Skydive, midiendo la “distancia” entre nodos en la topología) y texto (sentences-correlator, usando técnicas de ML para evaluar similitud entre descripciones de eventos).
Alertado asíncrono y escalable
Uno de los puntos donde IOMETRICS® Alerta se diferencia claramente del Alerta.io original es en el manejo de notificaciones. En el diseño base, los plugins se ejecutan de forma síncrona y secuencial, lo que implica que cualquier integración lenta (por ejemplo, creación de issues en Jira que puede tardar varios segundos) reduce el throughput global.
IOMETRICS® Alerta introduce un tipo de plugin específico que se ejecuta de forma asíncrona apoyándose en Celery y Redis. Los plugins de alertado asíncronos implementan una interfaz Alerter con métodos que serán invocados cuando se cree, se repita o se cierre una alerta, lo que permite desacoplar totalmente la recepción de la alerta de la ejecución de acciones de notificación.
Acciones de recuperación y remediación
IOMETRICS® Alerta agrega un mecanismo explícito para ejecutar acciones de recuperación o remediación automática antes de lanzar notificaciones a terceros. Estas acciones se integran mediante proveedores de recuperación, expuestos como plugins que se ejecutan al recibir la alerta y que intentan resolver el incidente sin intervención humana.
Mientras la recuperación está en curso, los plugins de alertado no se ejecutan; solo si la recuperación falla se activan las notificaciones configuradas (email, Jira, Odoo, Slack, Teams, etc.).
Gestión avanzada de blackouts
La gestión de ventanas de blackout es otra área que se refuerza. Alerta.io permite definir blackouts desde su API y UI, almacenándolos en base de datos y evitando notificaciones durante esos periodos para los recursos afectados.
IOMETRICS® Alerta introduce un mecanismo extensible de proveedores de blackouts, de modo que se pueden integrar fuentes externas para decidir si una alerta está en blackout.
Cuando una alerta está en blackout, no se ejecutan plugins de alertado y no se generan notificaciones; sin embargo, el sistema sigue controlando el fin del blackout: si al terminar el periodo la alerta sigue activa, entonces se ejecutan los plugins de notificación correspondientes.
Contextualización y enriquecimiento de alertas
Otra pieza clave de IOMETRICS® Alerta es el motor de contextualización, que permite enriquecer alertas con información adicional de forma declarativa. El sistema proporciona una API para definir reglas de contextualización con dos partes: condición (expresada en base a campos y atributos de la alerta) y contexto (información que se añadirá o modificará en la alerta si la condición se cumple).
Estas reglas se ejecutan al recibir la alerta y permiten, por ejemplo, añadir información de servicio, criticidad, responsable o enlaces útiles, sin necesidad de modificar la fuente de monitorización original.
API asíncrona de creación de alertas
Más allá de los webhooks estándar de Alerta.io, IOMETRICS® Alerta expone un API de creación de alertas que ejecuta todo el pipeline de procesado de una alerta de forma asíncrona end-to-end. El cliente recibe un identificador de tarea que puede consultar para saber el estado del procesamiento y, una vez completado, recuperar la alerta generada asociada a dicha tarea.
Este enfoque encaja mejor con integraciones que no necesitan respuesta inmediata pero sí quieren garantías de procesamiento completo y posibilidad de seguimiento, algo especialmente útil cuando intervienen pasos costosos como correlación avanzada, contextualización compleja o remediaciones automáticas.
En resumen…
Más allá de los webhooks estándar de Alerta.io, IOMETRICS® Alerta expone un API de creación de alertas que ejecuta todo el pipeline de procesado de una alerta de forma asíncrona end-to-end. El cliente recibe un identificador de tarea que puede consultar para saber el estado del procesamiento y, una vez completado, recuperar la alerta generada asociada a dicha tarea.
Este enfoque encaja mejor con integraciones que no necesitan respuesta inmediata pero sí quieren garantías de procesamiento completo y posibilidad de seguimiento, algo especialmente útil cuando intervienen pasos costosos como correlación avanzada, contextualización compleja o remediaciones automáticas.
Su enfoque modular y extensible facilita integrar recuperación automática, notificaciones desacopladas y reglas declarativas, ofreciendo así un pipeline de tratamiento de eventos más robusto, configurable y alineado con entornos de operación modernos
Referencias:
- io: https://alerta.io
- Repositorio de código de alerta.io: https://github.com/alerta
- Código de IOMETRICS® Alerta: https://github.com/datadope-io/datadope-alerta