Der Blog

Spaß mit Webhooks: PagerDuty Vorfälle im irischen Dialekt

von PagerDuty 6. August 2013 | 4 Minuten Lesezeit

PagerDuty -Webhooks erleichtern die Erstellung leistungsstarker Apps und Tools, die auf Vorfälle reagieren, sobald sie auftreten. Anstatt Skripte zu erstellen, die PagerDuty APIs kontinuierlich abfragen, ermöglichen Webhooks Ihren eigenen Diensten, Vorfälle zu empfangen, sobald sie ausgelöst, bestätigt und gelöst werden. So ist es beispielsweise möglich, automatisch eine Postkarte an das PagerDuty Hauptquartier senden, wenn sich ein Vorfall ändert (es fallen die regulären Portogebühren an).

Ein etwas praktischeres Beispiel ist etwas, das Clay Smith, einer unserer Webentwickler, während unseres letzten Hackdays erstellt hat. Er hat einen unkomplizierten Webhook-Consumer implementiert, der Vorfallmeldungen in einem schönen irischen Akzent in die Eingangshalle spricht:

Erste Schritte

Um hörbare Vorfälle zu aktivieren, benötigen Sie einen Ersatzcomputer, ein Paar Lautsprecher und ein Tool, das Text-to-Speech über die Befehlszeile ermöglicht. Wir verwenden die hochwertige irisch-englische Stimme „Moira“, die mit Mac OS X Mountain Lion geliefert wird. Vorausgesetzt, Sie befinden sich hinter einer Firewall, müssen Sie auch eine Art Localhost-Tunneling aktivieren, damit PagerDuty Ihren internen Webhook-Endpunkt erreichen kann. Wir empfehlen die Verwendung von ngrok Dafür ist es aber auch möglich, die Localtunnel-Pakete von Python oder Ruby zu verwenden.

Erstellen Ihres ersten Webhooks mit einem Localhost-Tunnel

Zunächst werden wir installieren und starten ngrok auf Port 7388, um einen Tunnel zum lokalen Host zu erstellen, an den PagerDuty Vorfälle senden kann:

$ sh ./ngrok 7388
Tunnelstatus online
Version 0.14/0.17
Protokoll http
Weiterleitung http://2812f1d7.ngrok.com -> 127.0.0.1:7388
Webschnittstelle http://localhost:4040
# Verbindung 0
Durchschnittliche Verbindungszeit 0,00 ms

Die Weiterleitungs-URL verwenden wir, wenn wir einen PagerDuty Webhook für einen Dienst erstellen.

Wählen Sie in der PagerDuty -Weboberfläche einen Dienst aus, für den Sie akustische Warnungen erhalten möchten. Bearbeiten Sie den Dienst und erstellen Sie einen neuen Webhook mit dem Namen „Audible Alert“ mit der Endpunkt-URL: http://<random ngrok key> .ngrok.com/pd-webhook. Vergessen Sie nicht, den pd-webhook-Pfad hinzuzufügen, wenn Sie das in diesem Blogbeitrag verwendete Tootles-Node.js-Skript verwenden.

Speichern Sie den Webhook und dann können wir mit der Konfiguration der Audioausgabe beginnen.

Verwenden von Tootles, einem Node.js-Server, der Vorfälle in die Befehlszeile druckt

Für unseren Hackday haben wir einen der einfachsten Webhook-Consumer entwickelt, den wir uns vorstellen können: tutts . Tootles druckt lediglich jeden PagerDuty Vorfall, der von einem Webhook empfangen wurde, in den Standard-Out-Modus. die Leistung von UNIX , wir können diese Ausgabe an etwas Interessanteres weiterleiten.

Nach der Installation von Tootles können Sie es über die Befehlszeile starten:

$ node index.js -o Zusammenfassung

Versuchen Sie zum Testen, einen manuellen Vorfall bei Ihrem Dienst auszulösen, der mit einem Webhook konfiguriert ist. Anschließend sollte in der Ausgabe eine Zusammenfassung dieses Vorfalls angezeigt werden:

$ node index.js -o Zusammenfassung
PagerDuty Alarm im Testdienst wurde ausgelöst: Test 1234

Das Drucken einer Zusammenfassung der Statusänderungen des Vorfalls ist jedoch nicht sehr interessant. Wir möchten, dass Mac OS X den Vorfall in einer schönen irischen englischen Stimme ausspricht. Wir können dies tun, indem wir die Ausgabe von tootles an den Befehl say oder ein anderes Text-to-Speech-Befehlszeilentool weiterleiten, wenn Sie ein anderes System verwenden:

$ node index.js -o summary | xargs -L 1 sagen

Wenn Sie einen Mac verwenden, können Sie zusätzliche Stimmen installieren für noch mehr Spaß, inklusive einer netten irisch-englischen Stimme namens Moira. Damit Moira Ihre Vorfälle ausspricht, verwenden Sie das Flag -v im Befehl say:

$ node index.js -o summary | xargs -L 1 say -v Moira

Die Möglichkeiten sind endlos, einschließlich der Übermittlung von Vorfallzusammenfassungen an Ihren Drucker:

$ node index.js -o Zusammenfassung | lpr

Obwohl Text-to-Speech einen physischen Computer mit Lautsprechern erfordert, lohnt es sich auch, webscript.io wenn Sie eine in der Cloud gehostete Lösung für benutzerdefinierte, in Lua geschriebene Webhook-Verbraucher ausprobieren möchten.

Wir sind begeistert von den Möglichkeiten der Webhook-Integrationen bei PagerDuty und freuen uns darauf, von Ihnen zu hören, wie Sie Webhooks verwenden. Kontaktieren Sie den Support unter pagerduty dot com für weitere Informationen, wenn Sie Hilfe bei Ihrer Webhook-Integration benötigen.