Nach fünf Monaten Entwicklung wurde die Version 1.1 des Projekts IncidentRelay veröffentlicht, das ein offenes System zur Organisation von Bereitschaftsschichten, zur Routenleitung von Benachrichtigungen und zur Unterstützung von Vorfällen darstellt, das auf einem eigenen Server (self-hosted) betrieben wird. IncidentRelay 1.1 wird als die erste stabile Version anerkannt (Version 1.0 hatte den Status einer Beta-Version). Das Projekt richtet sich an SRE-, DevOps- und Infrastrukturteams, die eine lokal bereitstellbare Alternative zu SaaS-Diensten für das Management von Bereitschaftsschichten (on-call management), die Umsetzung von Eskalationsrichtlinien und die Reaktion auf Vorfälle benötigen. Der Code des Projekts ist in Python geschrieben und steht unter der MIT-Lizenz.
IncidentRelay nimmt Ereignisse aus Überwachungssystemen entgegen, verknüpft sie mit dem Dienst, dem Team und der Rotation, um dann die Benachrichtigungen an die zuständigen Bereitschaftsdienstleister oder Teams zu übermitteln. Das System verfügt über Zeitpläne für Bereitschaftsschichten, Rotationen, Änderungen der Schichten, die Bestätigung des Erhalts von Vorfällen, die Statusmeldung ACK/Resolve, Erinnerungen, Eskalationen, vorübergehende Vertretungen von Bereitschaftsdienstles, die Festlegung von Zeiten für geplante Arbeiten und die Unterdrückung von noisy Alerts.
Der Hauptvorteil des Projekts liegt in der vollständigen Kontrolle über die Infrastruktur und die Routing-Logik. IncidentRelay wird in seiner eigenen Umgebung bereitgestellt, arbeitet mit seiner eigenen Datenbank und ermöglicht eine klare Trennung von eingehenden Routen, Teams, Rotationen und Lieferkanälen. Eingehende Tokens gehören zu den Routen und nicht zu den Kanälen, wodurch es einfacher wird zu verstehen, welcher externe Anbieter berechtigt ist, Ereignisse an ein bestimmtes Team zu senden.
IncidentRelay unterstützt den Empfang von Ereignissen aus Prometheus Alertmanager, Grafana Alerting, Zabbix, Sentry, LibreNMS, RMON, AWS SNS/CloudWatch sowie benutzerdefinierten Webhooks. Für die Benachrichtigung stehen Kanäle wie Mattermost, Slack, Telegram, Discord, Microsoft Teams, E-Mail, Webhooks, Browser/PWA Push sowie Anbieter von Sprachanrufen zur Verfügung. In Mattermost und Telegram können Benachrichtigungen Aktionen zur Bestätigung und Problemlösung enthalten, was eine Bearbeitung des Vorfalls ohne Wechsel zu einer separaten Benutzeroberfläche ermöglicht.
Das Projekt kann über Docker Compose, ein RPM-Paket für Red Hat-ähnliche Distributionen, manuell über systemd oder in Kubernetes mit einem Helm-Chart gestartet werden. Für kleine Installationen kann SQLite verwendet werden, während für Betriebssysteme mit höherer Last PostgreSQL empfohlen wird.
In der neuen Version wurden folgende Änderungen vorgenommen:
- Mehrstufige On-Call-Rotationen mit Zeitbeschränkungen, Schichtenprioritäten und Berücksichtigung zeitlicher Vertretungen wurden hinzugefügt;
- Ein Dienstkalender mit CalDAV und ICS-Abonnements für externe Kalender ist jetzt verfügbar;
- Incident-Eskalationsrichtlinien mit mehrstufigen Eskalationsketten sind umgesetzt worden;
- Warnungen in Gruppen, Ereignisgruppen, verzögerte Benachrichtigungen und manuelles Zusammenführen verwandter Alarme wurden hinzugefügt;
- Es wurden Zeitfenster für geplante Wartungsarbeiten und "stille" Alarme eingeführt;
- Die Möglichkeit, Kommentare zu Alarmen hinzuzufügen, wurde implementiert;
- Prioritäten für Vorfälle (P1-P5) sowie eine automatische Erhöhung der Priorität basierend auf der Wichtigkeit wurden hinzugefügt;
- Ein Servicekatalog, Serviceabhängigkeiten, SLI/SLO, die Historie der Auswirkungen auf die Systembetriebe (Service Impact History) und Geschäftsdienste (Business Services) wurden implementiert;
- Explain Trace zur Analyse der Routing-Entscheidungen: Warum ein Alarm in ein Team gelangt oder nicht, gruppiert, unterdrückt oder in einen bestimmten Kanal gesendet wurde, ist nun verfügbar;
- Überprüfungen (Heartbeats / Dead-Man-Switch) für Watchdog, Backup, ETL und andere Aufgaben, bei denen das Fehlen eines erwarteten Signals problematisch ist, wurden hinzugefügt.


Quelle: opennet.ru
