Se ha lanzado IncidentRelay 2.0, un sistema de código abierto para la gestión de guardias, el enrutamiento de alertas y la respuesta a incidentes. Puede implementarse en un servidor propio. El proyecto está dirigido a ingenieros de fiabilidad del sitio (SRE), equipos de DevOps e infraestructura que buscan una alternativa local a las plataformas de gestión de guardias basadas en la nube. El código está escrito en Python y se distribuye bajo la licencia MIT.
IncidentRelay acepta eventos de Prometheus Alertmanager, Grafana Alerting, Zabbix, Sentry, LibreNMS, RMON, AWS SNS/CloudWatch, Datadog, Uptime Kuma y gestores de webhook personalizados. Tras la normalización, el evento se asocia a un servicio, equipo y rotación, se aplican reglas de enrutamiento y políticas de escalamiento, y se envía una notificación al gestor de turno. Los métodos de entrega compatibles incluyen Mattermost, Slack, Telegram, Discord, Microsoft Teams, correo electrónico, webhook, notificaciones push en navegador/PWA y llamadas de voz.
La principal innovación de la versión 2.0 es el mecanismo de orquestación de eventos, que proporciona una capa de procesamiento de eventos independiente entre las integraciones entrantes y el ciclo de vida de las alertas. Los cambios clave incluyen:
- Se ha añadido un editor visual de reglas de orquestación. Las reglas se pueden aplicar globalmente o a un servicio específico, agruparse en grupos de condiciones anidados y modificarse secuencialmente en cuanto a prioridad, nivel de gravedad, etiquetas, comando, ruta, método de agrupación, políticas de notificación y escalamiento.
- Se implementaron acciones para suprimir, descartar y pausar el procesamiento de eventos, extraer valores usando expresiones regulares y JSON Path, dividir cadenas, crear variables y convertir valores;
- La configuración de la orquestación se divide en borradores editables y versiones publicadas inmutables. Se admiten la revisión de la configuración, la publicación, la reversión a una versión anterior y la adición de comentarios a los cambios;
- Están disponibles los modos desactivado, en segundo plano y activo. En el modo en segundo plano, los resultados de la ejecución de las reglas se almacenan para su análisis, pero no afectan al enrutamiento real. Los modos heredado, híbrido y de compatibilidad con orquestación están disponibles durante un período transitorio.
- Se han añadido herramientas de simulación y reproducción de eventos. Estas permiten probar reglas en un evento normalizado o en la carga útil de integración original sin generar una alerta real. Se proporcionan registros de ejecución, datos explicativos y métricas del modo sombra para analizar los resultados.
- Se implementan acciones de webhook reutilizables que se ejecutan de forma asíncrona tras el procesamiento del evento. Los encabezados se almacenan cifrados, los secretos se ocultan en la API y los registros, y el acceso a redes privadas está prohibido por defecto. Se pueden configurar tiempos de espera, reintentos y una lista de direcciones internas permitidas.
- Se ha añadido la integración con Uptime Kuma, que acepta mensajes webhook estándar sobre el estado del monitor. Se ha implementado la normalización del estado (activo/inactivo), la detección de importancia, el procesamiento de etiquetas y un nuevo tipo de ruta entrante, uptime_kuma.
- Se han añadido los parámetros apply_to_existing y reactivate_on_end a los silencios y a las ventanas de trabajo programadas. El primero aplica la supresión a las alertas ya abiertas, mientras que el segundo determina si se reanuda su procesamiento una vez finalizado el período de supresión. Las notificaciones, los recordatorios y las cadenas de escalamiento se pausan y se restablecen;
- Para los tokens de API personales, se han introducido permisos de lectura y modificación independientes para grupos, equipos, usuarios, rutas, canales, servicios, rotaciones, políticas, ventanas de mantenimiento, comprobaciones de latidos, SSO y orquestaciones. Los antiguos permisos agregados resources:read, resources:write y * se han mantenido para garantizar la compatibilidad con versiones anteriores.
- Se ha añadido una interfaz de registro de auditoría con filtrado y paginación. El registro documenta las operaciones relacionadas con orquestaciones, webhooks, silencios y ventanas de trabajo programadas, eliminando los valores confidenciales de los datos mostrados.
- La interfaz web ahora cuenta con un tema oscuro y opciones de idioma y diseño personalizables. Se ha añadido la localización al francés, se han ampliado las traducciones de las secciones de orquestación y mantenimiento, y se ha mejorado la edición de las reglas de coincidencia de grupos SSO.
- Se han mejorado las comprobaciones de latidos: se ha eliminado la creación repetida de eventos vencidos, la recuperación de la señal cierra correctamente la alerta y envía una notificación sobre la resolución del problema, y se ha estandarizado la presentación de las marcas de tiempo;
- Se ha preparado la documentación para el despliegue de Kubernetes mediante Helm. Se ha añadido un controlador específico para el modo Socket de Slack al gráfico de Helm, necesario para los botones interactivos de confirmación y cierre de incidentes.
- Hemos reforzado la seguridad de las solicitudes HTTP salientes, las expresiones regulares y los datos confidenciales, centralizado la gestión de UTC y las zonas horarias, revisado los cálculos del calendario de rotación y ampliado la cobertura de las pruebas automatizadas.
Antes de actualizar, se recomienda crear una copia de seguridad de la base de datos. Los cambios de esquema necesarios se realizan mediante el mecanismo de migración integrado de IncidentRelay. Para una implementación gradual de la orquestación de eventos, los desarrolladores recomiendan usar primero los modos en segundo plano e híbrido, verificar los registros de ejecución de reglas y, solo entonces, cambiar la orquestación al modo activo.
Fuente: opennet.ru
