Grafana OnCall – Open-Source-Hub für Warnungen und Vorfälle / Sudo Null IT News

Hey habr! Ich war überrascht, dass es keine einzige Erwähnung gibt Grafana OnCall, Incident Response Tool Open Source von Grafana Labs. Und dies muss behoben werden, da wir sowohl in Bezug auf die Sterne auf dem Github als auch als Teil der Grafana Cloud schnell wachsen, und in den Ausgaben auf dem Github gibt es hauptsächlich technische Leads von FAANG.

Kurz gesagt, OnCall ist ein Tool, das dabei hilft, zuverlässige Alarme / Vorfallreaktionen in einem Team zu organisieren, SLAs einzuhalten und nachts nicht von Anrufen aufzuwachen.

OnCall ist neu in der Open-Source-Welt, aber kein neues Produkt mehr. Es begann vor einigen Jahren als separates SaaS namens Amixr.IO. Dann erwarb Amixr.IO Grafana Labs und integrierte es in sein Ökosystem. Und erst kürzlich konnten wir endlich den OnCall-Quellcode öffentlich machen 🎉 Und damit ist er einem größeren Nutzerkreis zugänglich geworden – sowohl denen, die in der Infrastruktur ohne Internet arbeiten, als auch denen, die Open Source einfach lieben.

Was kann Grafana OnCall tun?

Es gibt viele Funktionen, ich werde die wichtigsten beschreiben.

Sammeln Sie Warnungen aus allen Quellen

Jede Integration besteht aus einer Reihe von Vorlagen, die auf die von der Webhook-Überwachung empfangenen Daten angewendet werden. Mehrere sind sofort einsatzbereit, wir arbeiten daran, die Liste zu erweitern und alle Open-Source-Überwachungssysteme abzudecken. Selbst wenn Ihre Quelle nicht vorhanden ist, hindert Sie nichts daran, Webhook-Warnungen zu akzeptieren und Vorlagen zu bearbeiten. Das Wichtigste ist, dass Sie in OnCall Alerts aus dem gesamten Monitoring-Zoo von Prometheus bis PRTG an einem einzigen Ort sammeln können.

Formatieren Sie Warnungen in Vorlagen

Innerhalb von OnCall können Sie mit Vorlagen viel zaubern. Sie können beispielsweise das Erscheinungsbild von Warnungen ändern, ihnen Links zu Ranbooks hinzufügen, unnötigen Papierkorb entfernen und so weiter. Sie können Warnungen angenehm gestalten. Sie könnten zum Beispiel so aussehen:

Oder noch vorsichtiger:

Mit Jinja 2 ist eine leistungsstarke Formatierung verfügbar, es gibt bedingte Operatoren, es gibt Iteratoren. Alle Felder können separat formatiert werden:

Gruppe

Eine der Aufgaben von OnCall ist es, den Warnsturm in Chats zu bekämpfen. Das Gruppieren funktioniert nach diesem Muster:

Alle Warnungen, die zu demselben Muster führen, werden gruppiert. Sie können beispielsweise nach allen Labels gruppieren: „{{ payload.labels }}“ oder nach Dienst: „{{ payload.labels[‘service’] }}”, oder nach Dienst und Region: “{{ payload.labels[‘service’] }}_{{ payload.labels[‘region’] }}”.

Integration mit Slack und Telegram

Die Integration mit Messenger ist das, worauf wir wirklich stolz sind. Schau dir den Screenshot an:

Hier gibt es einige coole Details:

  • Nur eine Nachricht ging an den allgemeinen Kanal, 1069! Warnungen wurden gruppiert. Wir haben diesen ganzen “Müll” versteckt.

  • OnCall hat die Telefonzentrale im Thread ordentlich markiert.

  • OnCall hat dem Thread ein Eskalationsprotokoll hinzugefügt (dazu später mehr). Wenn ein Vorfall geöffnet wurde, wurden zukünftige Schritte im Protokoll angezeigt.

  • OnCall überprüft regelmäßig, ob die Telefonzentrale einen Vorfall vergessen hat, der nicht geschlossen, aber als bestätigt markiert wurde. Wenn die Telefonzentrale irgendwo verschwindet, eskaliert OnCall den Vorfall erneut.

Eskalieren

“Escalator” ist das Herzstück von OnCall. Es reicht nicht aus, den Vorfall zu akzeptieren, wir müssen jemanden über diesen Vorfall informieren, und zwar so, dass sichergestellt ist, dass das SLA eingehalten wird. OnCall hat diesen Eskalationseditor:

Sie können gemäß dem Zeitplan an den diensthabenden Offizier eskalieren (dazu später mehr), Sie können ein mehrstufiges Schutzsystem erstellen, wenn eine Person verfehlt -> der Vorfall an eine andere geht, Sie können die Eskalation für die Nacht abhalten, und so weiter… Hauptsache, dies hilft sicherzustellen, dass der Vorfall im Dienst aufgenommen wird und Sie die SLA einhalten.

Weisen Sie Terminplaner zu

Eine der Hauptfunktionen von Grafana OnCall für verteilte Teams. In unserem Team sieht der Zeitplan beispielsweise so aus:

Und ja, wir bearbeiten den Dienstplan direkt in Google Kalender, und Grafana OnCall holt sich Updates und findet so heraus, an wen die Vorfallbenachrichtigung gesendet werden soll.

Für die Nachdenklichen haben wir einen Terraform-Provider vorbereitet, dank dessen Sie den Dienstplan in Git hinterlegen und sehr, sehr, sehr komplexe Rotationen konfigurieren und Änderungen per Pull / Merge Request übernehmen können: https://grafana.com/blog/2022/08/29/get-started-with-grafana-oncall-and-terraform/

Was ist unter der Haube

Das Benachrichtigungssystem soll zuallererst eine Warnung liefern und erst dann alles andere. Aus diesem Grund verwenden wir das, was wir den „langweiligen Stack“ nennen, der sich über die Jahre bewährt hat und was wir sehr gut kennen: Django, Celery, MySQL, RabbitMQ, Redis.

Als wir Open Source auf Hackernews ankündigten, bekamen wir viel Kritik. Es schien dem Kommentator, dass OnCall zu viele Abhängigkeiten erforderte. Obwohl es in Helm und Docker-compose verpackt ist und in den meisten Fällen mit ein paar Befehlen gestartet wird, Jeder ist gestresst von der “zusätzlichen” Datenbank, der Warteschlange und dem Cache.

Einerseits sind sie wirklich überflüssig, wenn Sie OnCall für “Spiele” betreiben möchten, andererseits steckt unter der Haube von OnCall unsere 3-jährige Erfahrung mit mehreren tausend Kunden. Während dieser drei Jahre wurde jeder nicht gelieferte oder verspätete Vorfall untersucht und führte zu einer Art von Verbesserung. Jetzt kann OnCall sowohl korrekt teilweise degradieren als auch das Ratenlimit korrekt festlegen, wenn eine von mehreren Quellen durchdreht, und nicht abstürzen, wenn die Slack-API seltsam ist, und sich sofort erholen. Ich denke, all diese Details sind ein gutes Thema für einen separaten Artikel.

Für die Fälle, in denen Stabilität nicht so wichtig ist, bereiten wir uns vor Miniaturversion.

Wie zu sagen

Wir haben drei Hauptumgebungen vorbereitet − Entwicklerumgebung, Prod. Umgebung (bisher nur helm für kubernetes) und Umgebung für “poke”. Wenn Sie eine Umgebung vermissen, teilen Sie uns dies bitte umgehend unter mit Probleme auf GitHub.

Wie man teilnimmt

Grafana OnCall ist ein Open-Source-Projekt und wir freuen uns jedes Mal unglaublich, wenn wir eine PR von der Community bekommen. Wenn Sie die Integration mit einem neuen Überwachungssystem oder einem neuen Messenger hinzufügen oder einfach nur etwas Einfaches reparieren möchten, willkommen auf unserem Github: https://github.com/grafana/oncall

Wir haben einen russischsprachigen Chat im Telegramm, in dem die Entwickler sitzen: https://t.me/amixr_ru

Wir haben auch monatliche Zoom-Anrufe, der nächste wird am 28. September sein, wo wir ein geheimes Feature zeigen werden, an dem wir fast 2 Monate gearbeitet haben 😏, und wir werden auch eine Arbeitsgruppe einberufen, um an der Integration mit Mattermost zu arbeiten, um die beliebteste Ausgabe zu schließen. Kommen Sie zum Call, dies ist eine großartige Gelegenheit, sich der Open-Source-Entwicklung anzuschließen! :

Similar Posts

Leave a Reply

Your email address will not be published.