Beim Aufbau von Open-Observability-Monitoring-Stacks spielen APIs eine zentrale Rolle. Sie verbinden getrennte Tools und erlauben den Aufbau von mächtigen Monitoring-Stacks, die Informationen aus unterschiedlichen Lösungen automatisch bündeln und teamübergreifende Interaktionen vereinfachen.

Ein Beispiel hierfür ist die Integration von Benachrichtigungen („Monitors“) und Events aus Datadog in Checkmk, die ich Ihnen in diesem Blog vorstellen möchte. Durch die Integration sparen Sie Zeit, da Sie bei der Fehlerursachenanalyse wesentlich schneller vorankommen und nicht mehrere Monitoring-Systeme gleichzeitig prüfen müssen.

Was ist Datadog?

Datadog ist eine cloudbasierte SaaS-Plattform zur Überwachung von Enterprise-Applikationen und IT-Infrastrukturen. Ein typisches Einsatzgebiet ist das Application Performance Monitoring (APM) durch DevOps-Teams.

ITOps-Teams profitieren ebenfalls von den Informationen aus Datadog, müssen aber neben den Applikationen auch die darunterliegende Infrastruktur wie zum Beispiel Netzwerke oder Server überwachen. Gerade in hybriden IT-Umgebungen mit einer Vielzahl von unterschiedlichen Systemen bietet Checkmk daher bessere Möglichkeiten, um die nötigen Monitoring-Daten zu erfassen.

Einfacher Datenabruf über die Datadog-API

Wegen der verschiedenen Anforderungen von IT-Teams haben einige Unternehmen Datadog und Checkmk gleichzeitig im Einsatz. Damit beide Monitoring-Lösungen nicht die gleichen Daten von einem System doppelt abfragen, ist es sinnvoll, dass beide Lösungen Informationen teilen.

Checkmk kann vorhandene Überwachungsdaten von Datadog wie von einem normalen Monitoring-Host abrufen. Eine Besonderheit ist jedoch der Abruf der Monitoring-Daten über die Datadog-API. Dazu nutzt Checkmk den Datadog-Spezialagenten. In Checkmk erscheinen Monitors dann als Monitoring-Service.

Durch die Übertragung der Monitors als Service haben Sie die volle Kontrolle und können entscheiden, ob Sie Monitors nur beobachten möchten oder ob Checkmk weitere Schritte einleiten soll. Checkmk kann beispielsweise auf Basis des Service-Zustandes Benachrichtigungen versenden.

Die Events aus Datadog überträgt Checkmk direkt in die Event Console. Die native Integration erlaubt es Ihnen, sämtliche Funktionen der Event Console auch für Events aus Datadog zu nutzen. Natürlich können Sie auf Basis der Datadog-Events auch Alerts in Checkmk konfigurieren.

Voraussetzungen für die Integration von Datadog in Checkmk

Sie können Daten aus Datadog in jede Checkmk Edition ab Version 2.1 integrieren. In dieser Anleitung nutze ich die Checkmk Enterprise Edition Version 2.1, diese können Sie hier herunterladen.

Da Datadog nur als Cloud-Lösung verfügbar ist, muss Ihre Checkmk Instanz zudem über einen Internetzugang verfügen, um die Datadog-API abrufen zu können. Sie können für diese Verbindung einen HTTP-Proxy-Server nutzen.

Schritt 1: Die Datadog-API absichern

Zur Absicherung des Zugangs müssen Sie in der Datadog-App einen API Key und einen Application Key erstellen. Diese sollte anschließend nur Checkmk zum Abrufen der Daten nutzen. Die Erstellung ist mit wenigen Klicks erledigt: Loggen Sie sich mit Ihren Zugangsdaten in die Datadog-App ein. Klicken Sie oben links auf das Suchfenster und suchen Sie nach „API Keys“.

Die Suche nach API-Keys in der Datadog-App
  • Im neuen Fenster sehen Sie die bisherigen API-Keys. Klicken Sie rechts oben auf + New Key.
  • Vergeben Sie einen Namen für den API-Schlüssel. Ich habe mich für „Checkmk_API“ entschieden. Bestätigen Sie mit Create Key.
Ein Screenshot aus der Datadog-App mit einem API-Key
  • Sie sehen nun ein Fenster mit der Key ID und dem Key. Kopieren Sie den Schlüssel, indem Sie auf „Copy Key“ klicken, die Key ID brauchen Sie nicht. Speichern Sie den Schlüssel und schließen Sie das Fenster.
  • Jetzt klicken Sie links in der Menüleiste den Punkt Application Keys direkt unter API Keys.
  • Klicken Sie im Fenster Application Keys rechts erneut auf blaue Schaltfläche + New Key“.
  • Wählen Sie wieder einen beliebigen Namen. Ich habe mich für „Checkmk_App_Key“ entschieden.
  • Bestätigen Sie wieder mit Create Key. Kopieren und speichern Sie den Applikationsschlüssel.
Eine Key-ID in der Datadog-App

Und das war es schon in Datadog. Sie können sich jetzt Checkmk zuwenden.

Step 2: Datadog-Hosts in Checkmk einrichten

In diesem Tutorial erstellen Sie zwei separate Datadog-Hosts in Checkmk. Die Aufteilung auf zwei Hosts vereinfacht die Verwaltung in Checkmk. Mit dem ersten Host übernehmen Sie die Monitors aus Datadog als Monitoring-Services. Den zweiten Host nutzen Sie für die Events aus Datadog. Dieser Host wird später nur einen einzelnen Service für das Anzeigen der übertragenen Events haben.

  • Klicken Sie auf Setup -> Hosts, und dann auf Add Host.
  • Bei Hostname nutzen Sie einen Namen Ihrer Wahl. Ich habe mich für „datadog_monitors“ entschieden.
  • Unter Network address klicken Sie auf „show more“ und aktivieren IP address family. Wählen Sie die Option „No IP“.
  • Klicken Sie auf Save & go to folder. Damit haben Sie den Host für Ihre Monitors erstellt.
Hinzufügen eines Hosts mit dem Namen datadog_monitors in Checkmk
  • Wiederholen Sie den Vorgang für den zweiten Host, nur mit einem anderen Host-Namen. Meinen Host für die Datadog-Events habe ich in meinem Beispiel „datadog_events“ genannt.
  • Auch hier müssen Sie IP address family anpassen und dann wieder auf Save & go to folder klicken.

Ihre Datadog-Hosts haben keine IP-Adresse. Stattdessen konfigurieren Sie im nächsten Schritt über die Datadog-Monitoring-Regel, dass der Datadog-Agent Daten von der Datadog-API abruft und dem passenden Host zuordnet.

Schritt 3: Agenten-Regel für den Datadog-Agenten anlegen

Da Sie zwei getrennte Hosts für Monitors und Events nutzen, müssen Sie auch die Datadog-Regel für jeden Host einmal aufsetzen. Fangen Sie mit der Regel für die Monitors an:

  • Klicken Sie auf Setup und suchen Sie nach „datadog“.
  • Unter Other integrations klicken Sie auf Datadog.
  • Wählen Sie Add rule, um eine neue Regel zu erstellen.
  • Unter Datadog fügen Sie bei Datadog instance den API-Schlüssel und den Applikationsschlüssel ein.
  • Prüfen Sie bei API host, ob die URL der Datadog-API zur Hosting-Region Ihrer Datadog-Instanz passt. Details zu den Datadog-Sites finden Sie in der Datadog-Dokumentation. Bei mir stimmte die Voreinstellung.
Erstellen einer Datadog-Regel in Checkmk, ein API-Key würde bereits hinzugefügt

Die Option HTTP proxy brauchen Sie, wenn die Kommunikation von Checkmk mit Datadog über einen Proxy-Server läuft. Bei mir ist dies nicht der Fall.

Jetzt kommen Sie zum wichtigsten Teil der Regel. Entscheiden Sie, was Checkmk importieren soll:

  • Mit Fetch monitors aktivieren Sie den Import von Monitors. Es stehen Ihnen zwei Optionen zur Verfügung, um die Monitors zu filtern:
    • Mit Restrict by tags filtern Sie nach Tags in Datadog. Checkmk überträgt dann die Monitors, in deren Konfiguration ein bestimmter Tag auftaucht.
    • Mit Restrict by monitor tags können Sie Monitors übertragen, die Sie zuvor in Datadog mit einem Tag versehen haben. Ich trage hier „checkmk“ ein, da ich in Datadog alle Monitors, die ich in Checkmk übertragen möchte, mit diesem Tag markiert habe.
Erstellen einer Datadog-Regel in Checkmk, die Option Fetch monitors wurde bereits ausgewählt

Welche Filteroption sich für Sie besser eignet, oder ob Sie beide kombiniert einsetzen sollten, hängt von Ihrer Datadog-Konfiguration ab. Restrict by tags eignet sich zum Beispiel, wenn Sie eine bestimmte Gruppe von Monitors komplett in Checkmk übertragen wollen. Zum Beispiel „linux“ für Linux-Systeme.

In meinem Beispiel habe ich einige Monitors in Datadog mit dem Monitor-Tag „checkmk“ versehen und mit Restrict by monitor tags nur diese zur Übertragung markiert. Gerade in größeren Datadog-Umgebungen ist es sinnvoll, bestehende Tags für einzelne Monitors zu vergeben und Restrict by monitor tags zu nutzen.

  • Scrollen Sie nach unten zu Conditions. Aktivieren Sie Explicit hosts und wählen Sie Ihren Datadog-Host für Monitors. Bei mir ist das „datadog_monitors“.
  • Speichern Sie die Regel mit Save.

Jetzt erstellen Sie eine neue Datadog-Regel, allerdings für die Datadog-Events.

  • Suchen Sie unter Setup nach „datadog“ und klicken unter Other integration auf Datadog. Klicken Sie auf das zweite Symbol von vorne, um die eben erstellte Regel zu klonen.
Setup-Ansicht der der Datadog-Regel in Checkmk, der Knopf für das Klonen ist rot markiert
  • Der API-Schlüssel und der Applikationsschlüssel bei Datadog instance sowie die URL bei API host sind durch das Kopieren der Regel bereits richtig. Sie müssen hier nichts ändern.
  • Deaktivieren Sie die Checkbox bei Fetch monitors und aktivieren Sie Fetch events, um die Übertragung der Events aus Datadog zu konfigurieren.
    • Bei Maximum age of fetched events empfehle ich die Default-Einstellung von 10 Minuten beizubehalten.
    • Mit Restrict by tags können Sie Tags aus Datadog verwenden, um die Events zu filtern. Ich möchte zum Beispiel sämtliche Events in Checkmk übertragen, die meine Datadog-Site selbst betreffen und nutze daher den Tag „source:datadog“. Damit sehe ich in Checkmk, wenn jemand die Konfiguration von Datadog verändert und beispielsweise einen neuen Monitor hinzufügt.

Möchten Sie zum Beispiel über einen Alert in Datadog informiert werden, müssten Sie bei Restrict by tags „source:alert“ eintragen.

Editieren der Datadog-Regel nach der Erstellung einer Kopie in Checkmk
  • Die weiteren Felder bei Fetch events beziehen sich auf die Parameter, die Checkmk beim Anlegen der Datadog-Events in der Event Console berücksichtigen soll. Details dazu finden Sie im Handbuch-Artikel zur Event Console. Ich habe in meinem Beispiel keine Anpassungen vorgenommen.
  • Unter Conditions aktivieren Sie Explicit hosts und wählen Ihren Datadog-Host für Events. Bei mir ist das „datadog_events“. Speichern Sie die Regel mit Save.

Den Zeitrahmen für die Event-Übertragung unter Maximum age of fetched events können Sie natürlich individuell anpassen. Beachten Sie aber, dass dieser nicht kürzer als das Check-Intervall sein sollte, sonst übersieht Checkmk eventuell Events. Außerdem kann es sein, dass Datadog bei der Anlegung der Events einen Zeitstempel aus der Vergangenheit nutzt. Daher sollte der Zeitraum nicht zu knapp bemessen werden. Ich empfehle daher in jedem Fall die Default-Einstellung.

Wenn Sie bei Fetch monitors und Fetch events keine Filter anwenden, überträgt Checkmk alle Monitors bzw. Events aus Datadog.

Schritt 4: Service-Discovery über die Datadog-API

Als letzten Schritt müssen Sie die automatische Service-Erkennung für die Datadog-Hosts starten.

  • Gehen Sie auf Setup -> Hosts.
  • Klicken Sie zunächst bei einem der Datadog-Hosts auf das gelbe Würfelsymbol. In meinem Beispiel starte ich mit meinem Host „datadog_monitors“.
Übersicht der Hosts im Setup von Checkmk mit zwei Datadog-Hosts,bei einem Host ist der Knopf für die automatische Service-Erkennung ist rot markiert
  • Warten Sie auf die automatische Service-Erkennung und überprüfen Sie die Services. Wenn Sie sämtliche Services in Checkmk übernehmen möchten, klicken Sie auf Accept all. Bei mir wurde zum Beispiel ein Service erkannt.
Die Service-Erkennung in Checkmk findet einen Datadog-Service
  • Gehen Sie erneut auf Setup -> Hosts.
  • Wiederholen Sie die Service-Erkennung nun für den zweiten Host. Bei mir ist das der Host für die Datadog-Events. Nach der Service-Erkennung nehme ich den Event-Service ebenfalls in das Monitoring auf.
  • Klicken Sie auf das gelbe Ausrufezeichen-Symbol oben in der rechten Ecke. Sie sollten dort die Zahl der vorgenommenen „changes“ sehen.
  • Klicken Sie auf Activate on selected sites.

Damit haben Sie dieses Tutorial erfolgreich abgeschlossen. Checkmk integriert jetzt Monitors und Events aus Datadog und Sie haben alle Informationen in einer Monitoring-Umgebung.

Fazit

Mit diesem Tutorial können Sie in wenigen Minuten Events und Monitors aus Datadog in Checkmk integrieren. Dadurch haben Sie alle Informationen automatisch in Checkmk und müssen nicht mehr zwischen mehreren Tools hin- und herspringen. Außerdem ist die Integration von Datadog nur ein Beispiel, wie Checkmk Daten von anderen Tools übernehmen kann. Checkmk kann zudem auch Daten von Tools wie ntop oder Prometheus integrieren.