endueendue
← Anwendungsfälle
Dev-Monitoring

Ihre Monitoring-Tools hinter einem einzigen On-Call-Agenten bündeln

Verbinden Sie Datadog, OpenSearch, Sentry und PagerDuty, indem Sie einen API-Schlüssel einfügen, und bauen Sie einen On-Call-Agenten, der bei einem Alarm alle der Reihe nach prüft.

Wenn ein 5xx-Alarm losgeht, öffnet die Person in Bereitschaft erst einmal Tabs. Datadog für den Monitor, Sentry für den Stacktrace, OpenSearch, um Logs aus demselben Zeitfenster auszugraben. Dann GitHub, um zu sehen, ob gerade etwas ausgeliefert wurde.

Sind diese Tools mit einem einzigen Agenten verbunden, können Sie die ganze Kontrollrunde mit einem Satz abgeben. Fragen Sie „Was ist in der letzten Stunde passiert?“, und der Agent fragt ein Tool nach dem anderen ab und liefert eine Zusammenfassung mit Belegen. Für die Verbindung brauchen Sie keinen Code. Sie fügen den API-Schlüssel, den Ihnen der jeweilige Dienst ausstellt, in ein Formular ein.

Gut für Teams, die

  • bei jedem Alarm zwischen vier oder fünf Dashboards hin- und herspringen
  • jede On-Call-Übergabe wieder mit der Frage „Was schlägt gerade Alarm?“ beginnen
  • für verschiedene Dienste verschiedene Monitoring-Tools nutzen und keinen Ort haben, an dem alles zusammen zu sehen ist

Was Sie brauchen

  • Ein endue-Konto und einen Agenten
  • Einen API-Schlüssel für jedes Monitoring-Tool, das Sie verbinden möchten. Wenn der Agent nur nachschlagen soll, beginnen Sie mit einem Schlüssel, der nur Leserechte hat

1. Monitoring-Tools verbinden

  1. Gehen Sie in der linken Leiste zu Resources → Connectors und öffnen Sie den Tab Discover. Monitoring-Tools sind unter Observability & Incidents zusammengefasst.
  2. Wählen Sie ein Tool, und endue zeigt Ihnen zuerst, was der Agent damit tun kann. Wenn alles passt, klicken Sie auf Connect.
  3. Geben Sie einen Verbindungsnamen und den Schlüssel ein und klicken Sie auf Connect. Das ist alles. Wählen Sie einen Namen, den Sie später wiedererkennen, etwa Datadog · prod.

Die Gruppe Observability & Incidents im Tab Discover. Datadog, Elasticsearch, Grafana, New Relic, PagerDuty und Sentry, jeweils mit der Anzahl der Tools und der Zahl der Tools, die eine Freigabe brauchen.

Das Datadog-Verbindungsformular. Vier Felder: Verbindungsname, Site, API-Schlüssel und App-Schlüssel.

Das fragt das jeweilige Formular ab.

  • Datadog: Site, API-Schlüssel, Anwendungsschlüssel (Application Key). Als Site können Sie app.datadoghq.com direkt aus der Adresszeile Ihres Browsers einfügen
  • Elasticsearch · OpenSearch: die https-URL des Clusters und ein API-Schlüssel
  • Grafana: Ihre Grafana-URL und ein Service-Account-Token (beginnt mit glsa_)
  • Sentry: Server-URL (https://sentry.io bei SaaS), Organisations-Slug, Auth-Token
  • New Relic: Region (us oder eu) und ein API-Schlüssel vom Typ USER (beginnt mit NRAK-)
  • PagerDuty: API-Schlüssel und die Konto-E-Mail-Adresse, unter der Incident-Aktionen protokolliert werden

OpenSearch wird über den Elasticsearch-Konnektor verbunden. Die Such- und Aggregations-APIs sind dieselben, Abfragen funktionieren also unverändert. Die Authentifizierung läuft allerdings nur per API-Schlüssel (Authorization: ApiKey). Ein Cluster, der nur Benutzername und Passwort akzeptiert, lässt sich deshalb noch nicht verbinden.

GitHub und Slack verbinden Sie per Anmeldung statt per Schlüssel. Eine Verbindung legen Sie einmal in Ihrem Konto an, und jeder Ihrer Agenten kann sie nutzen.

2. Dem Agenten hinzufügen

Eine angelegte Verbindung steht nicht automatisch jedem Agenten zur Verfügung. Sie entscheiden Agent für Agent, welche Tools er bekommt.

  1. Öffnen Sie den Agenten und wechseln Sie oben zu Studio. Der Canvas zeigt den gesamten Agenten auf einem Bildschirm.
  2. Klicken Sie oben rechts auf + Add Connector und wählen Sie im Tab My connectors die Verbindungen aus, die Sie gerade angelegt haben. Ist ein Tool noch nicht verbunden, können Sie es gleich dort im Tab Catalog verbinden.
  3. Hinzugefügte Tools reihen sich in der rechten Spalte des Canvas auf.

Der Studio-Canvas. Der Agent Oncall ist mit den Verbindungen zu Datadog, OpenSearch, Sentry, PagerDuty, Grafana und GitHub verdrahtet.

Klicken Sie auf die Konnektorspalte, um die Liste der Verbindungen dieses Agenten zu öffnen. Jede zeigt ihren aktuellen Status. Mit dem Schalter pausieren Sie eine Verbindung, mit Remove nehmen Sie sie heraus. Beides wirkt sich nur auf diesen Agenten aus. Die Verbindung selbst bleibt in Ihrem Konto.

Die Konnektorliste. Alle sieben Verbindungen zeigen OK, jede mit einem Ein/Aus-Schalter und einem Remove-Button.

3. Die Prüfreihenfolge in den Prompt schreiben

Sobald Tools hinzugefügt sind, wählt der Agent bereits das passende für die jeweilige Frage. Die Antworten werden aber einheitlicher, wenn Sie die Reihenfolge aufschreiben, der Ihr Team tatsächlich folgt. Wir haben auf dem Canvas Prompt geöffnet und Folgendes geschrieben.

Wenn ein Alarm oder eine Frage eingeht, in dieser Reihenfolge prüfen.

  1. Datadog: Monitor-Status des Dienstes, Fehler-Logs der letzten Stunde
  2. Sentry: neue Issues, der neueste Stacktrace und ab welchem Release sie auftreten
  3. OpenSearch: Request-Logs in app-logs-* für dasselbe Zeitfenster
  4. GitHub: PRs, die um diese Zeit gemergt wurden
  5. PagerDuty: offene Incidents und wer gerade Bereitschaft hat

Antworten kurz halten. Zu jeder vermuteten Ursache die Logzeile oder das Issue anhängen, auf dem sie beruht. Erst fragen, bevor ein Monitor stummgeschaltet, ein Incident bestätigt oder gelöst oder etwas in Slack gepostet wird.

Der Prompt-Editor. Jede Speicherung bleibt als Revision erhalten.

Dienstnamen, Indexmuster, Repo-Namen: Alles, was nur Ihr Team wissen kann, sollten Sie aufschreiben. Der Agent fragt dann nicht mehr nach.

Verwenden

Fügen Sie im Chat den Alarm so ein, wie er ankam, oder fragen Sie einfach.

5xx-Alarm auf checkout-api. Was ist in der letzten Stunde passiert?

Der Agent geht zuerst Datadog, Sentry und PagerDuty durch, alle gleichzeitig. Fällt etwas auf, grenzt er mit dem Sentry-Stacktrace, den OpenSearch-Logs und den GitHub-PRs weiter ein. Jeder Tool-Aufruf bleibt samt Argumenten über der Antwort stehen, sodass Sie jede Schlussfolgerung bis zu ihrer Quelle zurückverfolgen können.

Die Chat-Ansicht. Unter zwei Runden von Tool-Aufrufen steht eine Zusammenfassung, nach der die 5xx-Fehler direkt nach dem Deployment um 14:07 anstiegen, mit Belegen aus jedem Tool.

Bei allem, was sich schwer rückgängig machen lässt, fragt er zuerst

Abfragen laufen ohne Rückfrage. Aktionen, die Alarme stummschalten oder Spuren hinterlassen, die das Team sieht, bringen zuerst eine Freigabekarte auf den Bildschirm. Auf der Karte ist standardmäßig Cancel ausgewählt, ein versehentliches Enter führt also nichts aus.

Eine Freigabekarte zum Stummschalten eines Datadog-Monitors. Sie zeigt die Dauer 30m und den betroffenen Monitor, Cancel ist standardmäßig ausgewählt.

Bei den Monitoring-Tools laufen diese Aktionen über eine Freigabe.

  • Einen Datadog-Monitor stummschalten (Mute), einen Grafana-Alarm stummschalten (Silence)
  • Einen PagerDuty-Incident bestätigen, lösen oder mit einer Notiz versehen
  • Ein Sentry-Issue lösen oder ignorieren, ein New-Relic-Issue bestätigen oder schließen

Das Senden einer Slack-Nachricht und das Anlegen eines GitHub-Issues laufen über dieselbe Karte.

Im täglichen Betrieb

  • Ein Morgencheck: Sagen Sie dem Agenten im Chat „Führe diese Prüfung montags bis freitags um 9 Uhr aus“, und Sie können daraus eine Routine machen. Bei einem Routinelauf schaut niemand zu. Alles, was eine Freigabe braucht, etwa ein Stummschalten, wird deshalb übersprungen, und das Ergebnis vermerkt, dass es übersprungen wurde.
  • Zuerst auf den Status schauen: Wenn ein Schlüssel abläuft oder sich seine Berechtigungen ändern, ändert sich auch der Status in der Konnektorliste. Wenn der Agent bei einem bestimmten Tool festzuhängen scheint, fangen Sie dort an.