1. Einleitung
Checkmk enthält ein umfangreiches Monitoring von Google Cloud Platform (GCP), welches aus einem Konnektor zu GCP und einer stattlichen Sammlung von Check-Plugins besteht, die für Sie verschiedenste Metriken und Zustände abrufen und auswerten.
Neben den allgemeinen Informationen zu den Kosten Ihrer Google Cloud und dem aktuellen Status der Google-Dienste in Ihrer Region, können Sie mit allen Editionen von Checkmk ab Version 2.2.0 die folgenden Google Cloud-Produkte überwachen:
Mit Checkmk Cloud und Checkmk MSP können Sie darüber hinaus noch die folgenden Produkte in Ihr Monitoring aufnehmen:
Eine vollständige Auflistung aller verfügbaren Check-Plugins für die Überwachung von GCP finden Sie in unserem Katalog der Check-Plugins und wie Sie Ihre GKE-Cluster (Google Kubernetes Engine) ins Monitoring aufnehmen, beschreiben wir im Artikel Kubernetes überwachen.
2. Konkrete Umsetzung der GCP-Überwachung
2.1. Hosts und Services
In Checkmk ordnen sich alle zu überwachenden Objekte in eine hierarchische Struktur von Hosts und Services ein. Nun gibt es bei Cloud-basierten Diensten das Konzept von Hosts in dieser Form nicht. Um die Einfachheit und Konsistenz von Checkmk zu bewahren, bilden wir GCP-Objekte auf das Schema Host/Service ab. Jedes Ihrer Projekte in der Google Cloud wird dabei einem eigenen Host in Checkmk zugewiesen. Alle Cloud-Produkte, die Sie in diesem Projekt überwachen möchten, werden dann auf mehrere Services auf diesem speziellen Host aufgeteilt.
Ein kleines Projekt, in dem nur eine Compute Engine-VM läuft, kann dann in der Überwachung in Checkmk so aussehen:
2.2. Zugriff auf GCP
GCP stellt eine HTTP-basierte API bereit, über die auch Monitoring-Daten abrufbar sind.
Checkmk greift auf diese API über den Spezialagenten agent_gcp
zu.
Dieser tritt an die Stelle des Checkmk-Agenten, wird aber - anders als dieser - lokal auf dem Checkmk-Server ausgeführt.
3. GCP für Checkmk vorbereiten
3.1. Projekt-ID besorgen
Melden Sie sich in der Konsole von Google Cloud an. Achten Sie darauf, dass in der Titelzeile das korrekte Projekt ausgewählt ist bzw. wählen Sie hier das zu überwachende Projekt aus.
Öffnen Sie dann das Dashboard des Projekts. Hier sollten Sie - wenn das Dashboard noch dem Standard entspricht - eine Karte finden auf der die Project ID angegeben ist. Kopieren oder notieren Sie diese.
Sollte die Karte mit den Projektinformationen nicht mehr Teil Ihres Dashboards sein, finden Sie die notwendige ID auch über die Project settings:
3.2. Benutzer anlegen
Öffnen Sie als nächstes die Benutzerverwaltung unter IAM & Admin.
In der Übersicht auf der linken Seite müssen Sie nun Service Accounts auswählen und dann oben auf Create Service Account klicken.
Legen Sie anschließend einen Namen für den Service Account fest.
Wir empfehlen hier einen Namen zu vergeben, der sofort klar macht, wofür dieser Account da ist, bspw. checkmk-monitoring
.
Zusätzlich zu einem sprechenden Namen können Sie optional noch eine Beschreibung - eine Service Account Description - angeben.
Nach einem Klick auf Create and continue müssen Sie diesem Service-Account noch die beiden Rollen Monitoring Viewer und Cloud Asset Viewer zuweisen.
Klicken Sie dafür jeweils in das Feld Select a role und geben Sie den Rollennamen ein.
Achtung: Wenn Sie Monitoring Viewer in das Feld eingeben, werden Ihnen eine ganze Reihe Rollen mit ähnlichen Namen angezeigt. Achten Sie darauf tatsächlich Monitoring Viewer zu wählen.
Nach der Auswahl der Rollen, können Sie den nächsten optionalen Schritt überspringen und direkt auf Done klicken.
3.3. Schlüssel erzeugen
Damit Sie über diesen neuen Service Account auch tatsächlich auf die Monitoring- und Asset-Daten Ihrer Google Cloud zugreifen können, müssen Sie noch einen Schlüssel erzeugen. Diesen hinterlegen Sie später in der entsprechenden Regel in Checkmk bzw. im Password store.
In der Übersicht Service accounts for project My Project können Sie dazu in der Zeile Ihres neuen Service Accounts auf die drei Punkte klicken und dort Manage keys auswählen.
Klicken Sie sodann auf Add key und dann auf Create new key.
Wählen Sie als Format unbedingt JSON
aus und klicken Sie auf Create.
Mit diesem Klick auf Create wird - leicht übersehbar - eine Datei im JSON-Format heruntergeladen.
Bewahren Sie diese Datei vorübergehend gut auf, da Sie sie nicht erneut herunterladen können.
Wir empfehlen allerdings, auch diese Datei zu löschen, nachdem Sie deren Inhalt in Checkmk hinterlegt haben (siehe Regel für GCP-Agenten anlegen).
Bei Bedarf sollte ein neuer Schlüssel erzeugt und der alte gänzlich verworfen werden.
3.4. APIs im GCP-Projekt aktivieren
Auf der Übersichtsseite Ihres GCP-Projekts finden Sie auch den Menüpunkt APIs & Services.
Überprüfen Sie in dieser Übersicht, ob die Cloud Asset API
in der Liste der Enabled APIs & services auftaucht.
Wenn dem nicht der Fall ist, aktivieren Sie diese API über den Knopf Enable APIs and services.
Nach der Aktivierung dauert es noch einige Minute bis die API auch tatsächlich ansprechbar ist.
3.5. Abrechnungsinformationen überwachen
In der Google Cloud Platform werden Abrechnungsinformationen separat von den Ressourcen gespeichert. Im Regelfall werden dazu eigene Projekte für die Kostenanalyse in GCP angelegt, in welchen dann wiederum die Abrechnungsinformationen für andere Projekte gesammelt werden. Um diese Informationen auch mit Checkmk überwachen zu können ist es unerlässlich, dass diese Daten innerhalb der GCP nach BigQuery exportiert werden. Nur Daten, die in Tabellen von BigQuery vorliegen sind von außen - und somit für Checkmk - abrufbar. Wie ein solcher Export innerhalb von GCP eingerichtet wird, wird in dem Dokument Cloud Billing-Daten nach BigQuery exportieren der GCP-Hilfe ausführlich erklärt.
Wenn Sie BigQuery eingerichtet haben bzw. ohnehin bereits nutzen, finden Sie im SQL-Arbeitsbereich des Abrechnungsprojekts eine Auflistung der enthaltenen Tabellen. Öffnen Sie die Tabelle des Abrechnungsprojekts und klicken Sie auf den Reiter Details. Unter Tabellen-ID finden Sie die Information, die Sie beim Anlegen der Regel in Checkmk unter Costs > BigQuery table ID eintragen müssen.
Der Service für die Überwachung der Projektkosten ist als Übersicht ausgelegt. Es werden ausschließlich die monatlichen Kosten der einzelnen Projekte angezeigt und überwacht. Schwellwerte für diese monatlichen Kosten können Sie mit der Regel GCP Cost festlegen.
4. Monitoring in Checkmk konfigurieren
4.1. Host für GCP anlegen
Legen Sie für die Überwachung von GCP nun einen Host in Checkmk an. Den Host-Namen können Sie nach Belieben vergeben. Wenn Sie mehrere Projekte in GCP überwachen wollen, müssen Sie für jedes Projekt einen eigenen Host in Checkmk anlegen.
Wichtig: Da GCP als Dienst weder eine IP-Adresse noch einen DNS-Namen hat (den Zugriff macht der Spezialagent von selbst), müssen Sie die IP address family auf No IP einstellen.
4.2. Den GCP-Agenten konfigurieren
Wie eingangs erwähnt werden Projekte auf der Google Cloud Platform von einem Spezialagenten überwacht. Dieser wird mit einer Regel konfiguriert, welche Sie über Setup > Agents > VM, cloud, container > Google Cloud Platform (GCP) finden.
Tragen Sie hier im entsprechenden Feld die Project ID ein, welche Sie zuvor in Ihrem Projekt nachgeschlagen haben.
Unter JSON credentials for service account muss als nächstes der Schlüssel eingetragen werden, welchen Sie für Ihren Service Account erzeugt haben. Sie müssen hier das gesamte JSON-Objekt (inklusive der geschweiften Klammern) hineinkopieren.
Unter GCP services to monitor können Sie nun auswählen, welche GCP-Produkte durch den Spezialagenten überwacht werden sollen. Um die API-Abfragen möglichst sparsam zu gestalten, empfehlen wir nur die Produkte auszuwählen, die tatsächlich in Ihrem Projekt verwendet werden.
4.3. Services auf dem GCP-Host selbst
Starten Sie nun eine Service-Erkennung des neu angelegten GCP-Hosts, wo Checkmk nun etliche Services finden sollte. Nachdem Sie die Services hinzugefügt haben, sieht das nach einem Aktivieren der Änderungen im Monitoring etwa so aus:
4.4. Hosts für die Compute Engine VM-Instanzen anlegen
Services, die Compute Engine VM-Instanzen zugeordnet sind, werden nicht dem GCP-Host zugeordnet, sondern sogenannten Piggyback-Hosts.
Dies funktioniert so, dass Daten, die vom GCP-Host abgerufen wurden, an diese Piggyback-Hosts, die ohne eigene Monitoring-Agenten arbeiten, verteilt werden.
Dabei wird jeder VM-Instanz ein Piggyback-Host zugeordnet.
Die Namen dieser Piggyback-Hosts setzen sich aus der ID Ihres Projekts, einem Unterstrich und dem vollständigen Namen der Instanz zusammen.
Wenn Ihr Projekt beispielsweise die Projekt-ID my-project-19001216
trägt und Sie dann eine VM mit dem Namen my-instance01
überwachen, heißt der Piggyback-Host my-project-19001216_my-instance01
.
Legen Sie diese Hosts entweder von Hand an oder - falls möglich - überlassen Sie diese Aufgabe der dynamischen Host-Verwaltung.
Dynamische Host-Verwaltung einrichten
Als Nutzer einer unserer kommerziellen Editionen können Sie die Erstellung und Löschung von Hosts für Ihre VM-Instanzen einfach der dynamischen Host-Verwaltung überlassen. Der Menüeintrag Setup > Hosts > Dynamic host management bringt Sie zur Übersichtsseite aller bereits konfigurierten Verbindungen. Klicken Sie hier auf Add connection und geben Sie der Verbindung anschließend eine ID und einen Title.
Im Folgenden werden nicht alle Optionen der Connection properties behandelt. Konsultieren Sie bei Fragen die Inline-Hilfe und den oben verlinkten Hauptartikel.
Stellen Sie zuerst sicher, dass für den Kasten Connection properties der Show-more-Modus aktiviert ist, damit alle verfügbaren Optionen angezeigt werden.
Klicken Sie als nächstes unter Piggyback creation options auf Add new element. Passen Sie den Ordner an, in dem die Hosts Ihrer VM-Instanzen erstellt werden sollen. Die vorausgewählten Host attributes sind für Piggyback-Hosts im Grunde korrekt und bedürfen eher nicht der Anpassung.
Mit dem Aktivieren der Option Delete vanished hosts können Sie dafür sorgen, dass Piggyback-Hosts, für die über einen bestimmten Zeitraum keine frischen Daten mehr kommen, automatisch wieder gelöscht werden.
Im Rahmen der Überwachung Ihrer GCP-Projekte sollte die Option Restrict source hosts aktiviert werden. Tragen Sie hier Ihren GCP-Host aus dem Abschnitt Host für GCP in Checkmk anlegen ein.
Eine exemplarische Konfiguration der Verbindung könnte dann so aussehen:
Hosts für VM-Instanzen manuell anlegen
Alternativ können Sie Hosts für die Piggyback-Daten auch manuell anlegen. Dabei ist es wichtig, dass die Namen der Hosts exakt dem oben beschriebenen Schema entsprechen.
Tipp: Mit dem Skript find_piggy_orphans
aus dem Treasures-Verzeichnis finden Sie alle Piggyback-Hosts, für die es zwar Daten gibt, die aber noch nicht als Hosts in Checkmk angelegt sind:
OMD[mysite]:~$ share/doc/check_mk/treasures/find_piggy_orphans
my-project-19001216_my-instance01
my-project-19001216_my-instance02
Konfigurieren Sie die Hosts für diese Compute Engine VMs ohne IP-Adresse (analog zum GCP-Host) und wählen Sie als Monitoring-Agent No API integrations, no Checkmk agent aus. Wenn Sie unter Piggyback auch noch die Option Always use and expect piggyback data wählen, werden Sie beim Ausbleiben der Daten entsprechend gewarnt.
5. Diagnosemöglichkeiten
5.1. Der Service Exceptions
Um Sie bei der Einrichtung des GCP-Monitorings zu unterstützen und auch zukünftig bei Problemen in der Kommunikation mit der Google Cloud API zu helfen, gibt es den Service Exceptions. Hier werden alle Fehlermeldungen, welche die Google Cloud API an den Spezialagenten zurückliefert, gesammelt und aufbereitet. Im Fehlerfall wird dieser Service standardmäßig CRIT und gibt bereits in der Summary einen Hinweis darauf, wo das Problem liegt.
Nach einem Klick auf den Namen des Services erhalten Sie dann eine sehr detaillierte Meldung, die oft einen Link an genau die Stelle in Ihrem GCP-Projekt enthält, an der es beispielsweise einer anderen Einstellung bedarf. In folgendem Beispiel ist die Cloud Asset API im überwachten Projekt deaktiviert.
Ein Klick auf den WWW-Globus bringt Sie dann genau auf die Seite in Ihrem Projekt, auf der sich diese API aktivieren lässt.
6. Dashboards
Zum komfortablen Einstieg in die Überwachung von GCP liefert Checkmk ab Checkmk Cloud die beiden eingebauten Dashboards GCP GCE instances und GCP storage buckets mit aus. Beide finden Sie im Monitoring als Menüeinträge unter Monitor > Cloud.
Damit Sie einen direkten Eindruck bekommen, finden Sie nachfolgend zwei Beispiele, wie diese Dashboards aufgebaut sind. Zuerst das Dashboard zu den Compute-Engine-Instanzen, bei der Sie auf der linken Seite den aktuellen Zustand und auf der rechten Seite den zeitlichen Verlauf der wichtigsten Metriken vergleichen können:
Das Dashboard zu den Storage Buckets ist ganz ähnlich aufgebaut. Auf der linken Seite finden Sie aktuelle Daten der jeweiligen Buckets. Auf der rechten werden wieder die wichtigsten Metriken im zeitlichen Verlauf dargestellt: