IncidentRelay 2.0, et åpen kildekode-system for administrasjon av vaktberedskap, varslingsruting og hendelsesrespons, er lansert. Det kan distribueres på en selvhostet server. Prosjektet er rettet mot SRE-er, DevOps og infrastrukturteam som søker et lokalt alternativ til skybaserte plattformer for administrasjon av vaktberedskap. Koden er skrevet i Python og distribuert under MIT-lisensen.
IncidentRelay godtar hendelser fra Prometheus Alertmanager, Grafana Alerting, Zabbix, Sentry, LibreNMS, RMON, AWS SNS/CloudWatch, Datadog, Uptime Kuma og tilpassede webhook-håndterere. Etter normalisering knyttes hendelsen til en tjeneste, et team og en rotasjon, rutingsregler og eskaleringspolicyer brukes, og et varsel sendes til den nåværende behandleren på vakt. Støttede leveringsmetoder inkluderer Mattermost, Slack, Telegram, Discord, Microsoft Teams, e-post, webhook, nettleser-/PWA-push og leverandører av taleanrop.
Hovedinnovasjonen i versjon 2.0 er hendelsesorkestreringsmekanismen, som gir et separat hendelsesbehandlingslag mellom innkommende integrasjoner og varslingslivssyklusen. Viktige endringer inkluderer:
- En visuell redigeringsenhet for orkestreringsregler er lagt til. Regler kan brukes globalt eller på en bestemt tjeneste, grupperes i nestede tilstandsgrupper og endres sekvensielt for prioritet, alvorlighetsnivå, etiketter, kommando, rute, grupperingsmetode, varslingspolicyer og eskalering.
- Implementerte handlinger for å undertrykke, forkaste og sette hendelsesbehandling på pause, trekke ut verdier ved hjelp av regulære uttrykk og JSON-sti, dele strenger, opprette variabler og konvertere verdier;
- Orkestreringskonfigurasjonen er delt inn i redigerbare utkast og uforanderlige publiserte versjoner. Konfigurasjonsgjennomgang, publisering, tilbakestilling til en tidligere versjon og legge til kommentarer til endringer støttes;
- Deaktiverte, skygge- og aktive moduser er tilgjengelige. I skyggemodus lagres regelutførelsesresultater for analyse, men påvirker ikke faktisk ruting. Eldre, hybride og orkestreringskompatibilitetsmoduser er tilgjengelige i en overgangsperiode.
- Verktøy for hendelsessimulering og avspilling er lagt til. Disse lar deg teste regler på en normalisert hendelse eller den opprinnelige integrasjonsnyttelasten uten å generere et reelt varsel. Utførelsesspor, forklaringsdata og skyggemodusmålinger er tilgjengelige for å analysere resultater.
- Gjenbrukbare webhook-handlinger implementeres og utføres asynkront etter hendelsesbehandling. Overskrifter lagres kryptert, hemmeligheter skjules i API-et og loggene, og tilgang til private nettverk er forbudt som standard. Tidsavbrudd, nye forsøk og en liste over tillatte interne adresser kan konfigureres.
- La til integrasjon med Uptime Kuma, som godtar standard webhook-meldinger om monitorstatus. Normalisering av status for opp og ned, viktighetsdeteksjon, tagbehandling og en ny innkommende rutetype, uptime_kuma, er implementert.
- Parameterne apply_to_existing og reactivate_on_end er lagt til i vinduer for deaktivering og planlagte arbeidsvinduer. Den første bruker undertrykkelse på allerede åpne varsler, mens den andre bestemmer om behandlingen skal gjenopptas etter at undertrykkelsesperioden er over. Varsler, påminnelser og eskaleringskjeder settes på pause og gjenopprettes;
- For personlige API-tokener er det innført separate lese- og endringstillatelser for grupper, team, brukere, ruter, kanaler, tjenester, rotasjoner, policyer, vedlikeholdsvinduer, pulskontroller, SSO og orkestrering. De gamle aggregerte tillatelsene resources:read, resources:write og * er beholdt for bakoverkompatibilitet.
- Et grensesnitt for revisjonslogg med filtrering og paginering er lagt til. Loggen registrerer operasjoner som involverer orkestrering, webhooks, stillhet og planlagte arbeidsvinduer, med sensitive verdier fjernet fra de viste dataene.
- Nettgrensesnittet har nå et mørkt tema og brukerdefinerte språk- og designinnstillinger. Fransk lokalisering er lagt til, oversettelser for orkestrerings- og vedlikeholdsdelene er utvidet, og redigering av samsvarsregler for SSO-grupper er forbedret.
- Forbedrede hjerteslagskontroller: eliminerte gjentatte forsinkede hendelser, signalgjenoppretting lukker varselet korrekt og sender et varsel om at problemet er løst, og presentasjonen av tidsstempler er standardisert;
- Dokumentasjon for Kubernetes-distribusjon ved bruk av Helm er utarbeidet. En dedikert Slack Socket Mode-behandler er lagt til i Helm-diagrammet, som er nødvendig for de interaktive bekreftelses- og lukkingsknappene for hendelser.
- Vi har styrket sikkerheten til utgående HTTP-forespørsler, regulære uttrykk og sensitive data, sentralisert håndtering av UTC og tidssoner, omarbeidet beregninger av rotasjonsplaner og utvidet automatisert testdekning.
Før oppgradering anbefales det å opprette en sikkerhetskopi av databasen. De nødvendige skjemaendringene utføres ved hjelp av IncidentRelays innebygde migreringsmekanisme. For en gradvis implementering av Event Orchestration anbefaler utviklerne å bruke skygge- og hybridmodus først, verifisere regelutførelsesspor, og først deretter bytte orkestrering til aktiv modus.
Kilde: opennet.ru
