A fost publicată versiunea 2.0 a proiectului IncidentRelay, care dezvoltă un sistem deschis pentru organizarea schimburilor de tura, rutarea notificărilor și gestionarea incidentelor, desfășurat pe un server propriu (self-hosted). Proiectul este destinat echipelor SRE, DevOps și infrastructurii, care caută o alternativă locală la platformele cloud de gestionare a schimburilor de tura. Codul este scris în Python și este distribuit sub licența MIT.
IncidentRelay primește evenimente din Prometheus Alertmanager, Grafana Alerting, Zabbix, Sentry, LibreNMS, RMON, AWS SNS/CloudWatch, Datadog, Uptime Kuma și diverse webhook-uri. După normalizare, evenimentul este corelat cu serviciul, echipa și rotația, fiind aplicate reguli de rutare și politici de escaladare, iar notificarea este trimisă actualului de serviciu. Pentru livrare, sunt acceptate Mattermost, Slack, Telegram, Discord, Microsoft Teams, email, webhook, notificări browser/PWA și furnizori de apeluri vocale.
Noua funcționalitate de bază din versiunea 2.0 este mecanismul de Orchestrare a Evenimentelor, care oferă un strat separat de procesare a evenimentelor între integrările de intrare și ciclul de viață al alertelor. Principalele modificări sunt:
- A fost adăugat un editor vizual pentru regulile de orchestrare. Regulele pot fi aplicate global sau unui serviciu specific, pot fi grupate în condiții în cascadă și pot modifica secvențial prioritatea, nivelul de importanță, etichetele, echipa, ruta, metoda de grupare, politicile de notificare și de escaladare;
- Sunt implementate acțiuni pentru suprimarea, abandonarea și suspendarea procesării evenimentelor, extragerea valorilor prin expresii regulate și JSON Path, împărțirea șirurilor, crearea de variabile și transformarea valorilor;
- Configurarea orchestrării este împărțită în schițe editabile și versiuni publicate imuabile. Sunt suportate verificarea configurației, publicarea, revenirea la versiunea anterioară și adăugarea de comentarii la modificări;
- Sunt prevăzute moduri disabled, shadow și active. În modul shadow, rezultatele execuției regulilor sunt păstrate pentru analiză, dar nu influențează rutarea reală. Pentru perioada de tranziție, sunt disponibile moduri de compatibilitate legacy, hybrid și orchestration;
- Au fost adăugate instrumente de simulare și redare a evenimentelor. Acestea permit verificarea regulilor pe un eveniment normalizat sau pe un payload de integrare original, fără a crea un alert real. Pentru analiza rezultatelor sunt furnizate trasee de execuție, date Explain și metrici pentru modul shadow;
- S-au implementat acțiuni webhook reutilizabile, care se desfășoară asincron după procesarea evenimentului. Anteturile sunt stocate criptat, secretele sunt ascunse în API și în jurnale, iar accesările la rețelele private sunt interzise din oficiu. Se pot seta time-out-uri, tentative de reluare și o listă de adrese interne permise;
- A fost adăugată integrarea cu Uptime Kuma, care acceptă mesaje webhook standard despre starea monitorilor. S-au realizat normalizarea stărilor UP și DOWN, determinarea importanței, procesarea etichetelor și un nou tip de rută de intrare uptime_kuma;
- Pentru silences și feronale programate, au fost adăugate parametrii apply_to_existing și reactivate_on_end. Primul permite aplicarea suppressiei la alertele deja deschise, iar al doilea determină dacă trebuie reluată procesarea acestora după finalizarea perioadei de suppressie. Notificările, mementourile și lanțurile de escaladare sunt suspendate și reluate;
- Pentru token-urile API personale, au fost introduse drepturi de citire și modificare separate pentru grupuri, echipe, utilizatori, rute, canale, servicii, rotații, politici, feronale de întreținere, verificări heartbeat, SSO și orchestration. Drepturile vechi agregate resources:read, resources:write și * au fost păstrate pentru compatibilitate inversă;
- A fost adăugată o interfață de jurnal de audit cu filtrare și paginare. Jurnalul înregistrează operațiuni legate de orchestration, acțiuni webhook, silences și feronale programate, în timp ce valorile confidențiale sunt eliminate din datele afișate;
- Interfața web a primit un mod întunecat și setări personalizate pentru limbă și temă. A fost adăugată localizarea în limba franceză, s-au extins traducerile secțiunilor de orchestration și întreținere, iar editarea regulilor de mapare SSO a fost remediată;
- Funcționarea verificărilor heartbeat a fost îmbunătățită: s-au exclus recrearea repetată a evenimentelor de expirare, recuperarea semnalului închide corect alertul și trimite o notificare de rezolvare a problemei, iar reprezentarea timpurilor a fost uniformizată;
- A fost pregătită documentația pentru desfășurarea în Kubernetes cu ajutorul Helm. În chart-ul Helm a fost adăugat un handler separat pentru Slack Socket Mode, care este necesar pentru funcționarea butoanelor interactive de confirmare și închidere a incidentelor;
- S-a întărit protecția cererilor HTTP externe, a expresiilor regulate și a datelor confidențiale, s-a centralizat prelucrarea UTC și a fusurilor orare, s-au reproiectat calculele programărilor rotațiilor și s-a extins acoperirea cu teste automate.
Înainte de actualizare, este recomandat să creați o copie de rezervă a bazei de date. Modificările necesare ale schemei sunt efectuate prin mecanismul standard de migrații IncidentRelay. Pentru implementarea treptată a Event Orchestration, dezvoltatorii recomandă să folosească mai întâi modurile shadow și hybrid, să verifice trasările execuției regulilor și abia apoi să comute orchestration în modul active.
Sursa: opennet.ro
