- PagerDuty /
- Der Blog /
- Unkategorisiert /
- Chatten mit der API von PagerDuty
Der Blog
Chatten mit der API von PagerDuty
Gast-Blogbeitrag von Simon Westlake, Chief Technical Officer für Leistungscode , ein komplettes CRM-, OSS- und Abrechnungssystem für ISPs. Powercode wird von über zweihundert ISPs weltweit verwendet.
Da Powercode weltweit von verschiedenen Internetanbietern genutzt wird, verfügen wir über Integrationen mit unterschiedlichsten Drittanbieterdiensten. Diese Integrationen umfassen E-Mail-Kontoverwaltung, Rechnungsdruck, Kreditkartenabwicklung, Fahrzeugortung, Gerätebereitstellung und vieles mehr. Die meisten dieser Integrationen kommen jedoch nur wenigen unserer Kunden zugute. Daher war es eine angenehme Überraschung, dass PagerDuty nach der Integration so stark von unseren Kunden genutzt wurde.
Überlegungen zur Integration mit Apps von Drittanbietern
Ich hörte zum ersten Mal von PagerDuty , als wir 2012 in unserer Heimatstadt Random Lake, Wisconsin, ein Powercode-Benutzertreffen veranstalteten. Einer unserer leidenschaftlichsten Benutzer, Steve, erzählte mir, wie er Powercode für seinen ISP einsetzte. Ich erwähnte, dass wir die Bewältigung von Notfällen außerhalb der Geschäftszeiten als große Herausforderung empfinden, da viele der kleineren ISPs, die Powercode verwenden, nicht über die Einnahmen verfügen, um ein rund um die Uhr besetztes Netzwerkbetriebszentrum (NOC) zu rechtfertigen. Und es ist wirklich nervig, auf das Klingeln des Telefons zu warten, wenn man eine E-Mail vom Netzwerküberwachungssystem erhält, die einen darüber informiert, dass die Hälfte des Netzwerks ausgefallen ist. Er holte schnell seinen Laptop heraus und loggte sich in sein PagerDuty -Konto ein, um mir zu zeigen, was uns entgangen war.
Nachdem er mir die Benutzeroberfläche und den Funktionsumfang erklärt hatte, war ich sofort überzeugt, dass die Integration von PagerDuty in Powercode für uns unerlässlich ist. Wir haben jedoch drei strenge Anforderungen, die wir bei der Integration von Drittanbieterdiensten in Powercode stets einhalten:
- Verfügt der Dienst über eine API?
- Ist die API gut geschrieben und dokumentiert?
- Stellt das Unternehmen eine Test-/Integrationsumgebung für Entwickler bereit?
Wir haben schon oft Fehler gemacht, bei denen wir uns entschieden haben, eine dieser Anforderungen zu ignorieren, was sich jedes Mal als Albtraum entpuppte. Schlecht geschriebene APIs (oder gar keine API) und wenig Support von Drittanbietern bedeuten, dass wir eine wackelige Integration wiederherstellen müssen. Und wenn Kunden sich wirklich auf die Integration verlassen, ist es ein ständiger Ärger, sie am Laufen zu halten. Glücklicherweise hat PagerDuty alle drei Punkte erfüllt. Die API war solide und gut dokumentiert, und sie stellten uns bereitwillig eine Testumgebung zur Verfügung, um den Dienst in Powercode zu integrieren. Wenn wir uns neue Anbieter ansehen, drücke ich immer die Daumen für eine konsistente, REST- und JSON-basierte API, und zum Glück haben wir genau das bekommen!
Was mir besonders gefällt, wenn ich eine Integration mit einem Drittanbietersystem erstelle, ist die Tatsache, dass die uns zur Verfügung gestellte API dieselbe ist, die die ursprünglichen Entwickler zum Aufbau des Kernsystems verwendet haben. Dies war bei der PagerDuty -API definitiv der Fall. Wir konnten alles, was wir brauchten, problemlos einbinden, und die Integration verlief reibungslos.
Analyse der Integrations-API von PagerDuty
Bei der Arbeit mit der API mussten wir einige Entscheidungen treffen. Vor der Integration von PagerDuty war die einzige Möglichkeit zur Alarmierung in Powercode das Auslösen einer E-Mail. Der Auslösemechanismus bot verschiedene Konfigurationsmöglichkeiten, wie zum Beispiel:
- Wie lange muss sich dieses Gerät im Alarmzustand befinden, bevor ein Alarm ausgelöst wird?
- Wie oft soll Powercode die Benachrichtigung wiederholen?
- Wie hoch ist die Häufigkeit und Anzahl der Wiederholungen?
Wir erkannten schnell, dass die Beibehaltung dieser Konfiguration keinen Sinn ergab, da wir die Alarmparameter in PagerDuty einrichten konnten. Wir wollten außerdem einen Verlauf der Alarme für Geräte in PagerDuty verwalten. Schließlich mussten wir entscheiden, ob wir eine bidirektionale Integration mit PagerDuty einrichten wollten – sollte eine in PagerDuty geöffnete oder geänderte Alarmierung Auswirkungen auf Powercode haben?
Nach reiflicher Überlegung haben wir uns gegen die Integration einer Zwei-Wege-Kommunikation entschieden. Wir wollten Powercode als „Master“ für den Status von Vorfällen belassen und die Benutzer dazu ermutigen, die Powercode-Oberfläche zur Verwaltung ihrer Geräte zu nutzen. Dies stellte uns vor ein Problem: Was passiert, wenn jemand einen Vorfall in PagerDuty behebt, während in Powercode noch Alarme ausgelöst werden?
Um dieses Problem zu lösen, haben wir uns entschieden, bei jedem Zyklus unserer Benachrichtigungs-Engine, also einmal pro Minute, eine Vorfallserstellung oder -aktualisierung in PagerDuty auszulösen. PagerDuty protokolliert Aktualisierungen eines offenen Vorfalls, ohne einen weiteren Vorfall auszulösen. Außerdem bündelt PagerDuty automatisch offene Vorfälle, die etwa zur gleichen Zeit auftreten, in einer einzigen Warnung, um die Anzahl der Warnmeldungen zu reduzieren. Dies kann zwar eine lange Liste von Vorfallsaktualisierungen in PagerDuty erzeugen, bietet uns aber einige Vorteile:
- Ändert sich der Status eines Geräts, wird diese Änderung in der Vorfallbeschreibung PagerDuty berücksichtigt. Beispiel: Wenn ein Router einen Alarm auslöst, weil die CPU-Auslastung zu hoch ist, und anschließend erneut Alarm auslöst, weil die Temperatur zu hoch ist, können wir diese Information in die Beschreibung eintragen, indem wir den Vorfall erneut auslösen.
- Wenn ein Benutzer einen Vorfall in PagerDuty löst, der nicht wirklich gelöst ist (das Gerät befindet sich noch im Alarmzustand), wird er automatisch erneut geöffnet.
Ein Vorteil der PagerDuty API besteht darin, dass Sie einen „Vorfallschlüssel“ übermitteln können, um den betreffenden Vorfall zu verfolgen. Wir haben uns entschieden, die eindeutige ID des alarmierenden Geräts in unserer Datenbank als Vorfallschlüssel zu verwenden – dies vereinfachte den Deduplizierungsprozess und ermöglichte es uns, in PagerDuty einen Verlauf der mit diesem Gerät aufgetretenen Vorfälle zu führen. Auch die Lösung oder Bestätigung von Vorfällen aufgrund von Änderungen in Powercode wurde vereinfacht – wir wussten jederzeit, wie wir den betreffenden Vorfall referenzieren konnten, ohne eine weitere Kennung speichern zu müssen. Diese scheinbar kleine Funktion der PagerDuty -API hat unsere Integration erheblich beschleunigt. Ein Beispiel unten zeigt, wie einfach dies in PHP für uns möglich ist:
Dies gibt uns eine schöne Liste beschreibender Vorfälle in PagerDuty:
Halten Sie alle mit PagerDuty auf dem Laufenden
Bei unserer ersten Integration wurde nur die Integrations-API von PagerDuty verwendet. Wir gingen davon aus, dass die meisten anderen Funktionen von den Benutzern direkt über die PagerDuty -Anwendung gesteuert und abgerufen würden und es daher wenig sinnvoll wäre, sie alle in Powercode neu zu erstellen. Mit der Zeit fanden wir jedoch Verwendungsmöglichkeiten für die Daten in anderen Bereichen. Beispielsweise haben wir in unserem NOC ein System implementiert, das den Abschnitt „Zeitpläne und Eskalationsrichtlinien“ der API verwendet, um unseren Technikern vor Ort anzuzeigen, wer gerade Bereitschaftspersonal hat und wen sie im Falle einer Eskalation anrufen müssen. Als Nächstes planen wir, den Webhook-Abschnitt der API zu implementieren, um in Powercode Protokolle speichern zu können, die zeigen, wer gerade an einem Vorfall arbeitet. So können wir unseren Kunden bessere Echtzeitdaten liefern, ohne für jedes Mitglied ihrer Organisation ein Konto in PagerDuty erstellen zu müssen.
Abschließende Gedanken
Was mir besonders gefällt, ist die positive Reaktion unserer Kunden und die Nutzung des Dienstes. Ich glaube, dass die PagerDuty Integration in Powercode von allen integrierten Diensten der am häufigsten genutzte Drittanbieterdienst ist. Nachdem wir den Leuten gezeigt hatten, wie es funktioniert, war die Resonanz durchweg positiv. Wir nutzen PagerDuty sogar für unseren After-Hour-Support für Powercode selbst – wenn Sie außerhalb der Geschäftszeiten unsere Notfall-Hotline anrufen und eine Voicemail hinterlassen, wird ein Vorfall in PagerDuty geöffnet, der den Eskalationsprozess durchläuft!
Wir empfehlen PagerDuty weiterhin unseren Kunden und ich bin überzeugt, dass die kontinuierliche Integration in Powercode dank der soliden API und des hervorragenden Supports ein Kinderspiel ist. Schauen Sie sich diesen Integrationsleitfaden an um zu sehen, wie einfach es ist, Powercode in PagerDuty zu integrieren.

