Monitoring und Logging mit Stackdriver für einen besseren Einblick in den Zustand Ihrer Anwendung

In diesem Codelab erfahren Sie, wie Sie mit Stackdriver Ihre Leistungsmesswerte und Logs für Google Cloud Platform-Dienste und -VMs überwachen und überprüfen.

In diesem Codelab üben Sie,

  • Machen Sie sich mit der Stackdriver-Startseite vertraut.
  • Dashboards und Diagramme verstehen
  • Verfügbarkeitsdiagnose erstellen
  • Erstellen Sie eine einfache Benachrichtigungsrichtlinie.
  • Mit Benachrichtigungsvorfällen arbeiten
  • Loganzeige aufrufen.

Welche Erfahrung haben Sie mit Stackdriver?

Was ist das? Ich habe Stackdriver noch nie verwendet, aber ich habe Erfahrung mit dem Monitoring von Anwendungen. Ich habe von Stackdriver Reifen überrascht, aber tief gestiegen.

Umgebung zum selbstbestimmten Lernen einrichten

Wenn Sie noch kein Google-Konto haben (Gmail oder Google Apps), müssen Sie eines erstellen.

Melden Sie sich unter console.developers.google.com in der Google Cloud Platform Console an und erstellen Sie ein neues Projekt:

Projekt-ID speichern, ein eindeutiger Name für alle Google Cloud-Projekte. In diesem Codelab wird sie später als PROJECT_ID bezeichnet.

Wichtig: Rufen Sie die Compute Engine-Seite auf, um die Aktivierung der Compute Engine API zu starten:

Und dann: Compute → Compute Engine → VM-Instanzen

Zum ersten Mal wird ein Bildschirm mit der Meldung „Compute Engine wird vorbereitet. Dies kann eine Minute oder länger dauern. Sie können weiter unten in Google Cloud Shell anmelden, aber Sie können erst VMs erstellen, wenn dieser Vorgang abgeschlossen ist.

Sie führen den Großteil der Arbeit über Google Cloud Shell aus, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird. Diese Debian-basierte virtuelle Maschine ist mit allen Entwicklertools ausgestattet, die Sie benötigen. Sie bietet ein nichtflüchtigen 5-GB-Basisverzeichnis. Öffnen Sie Google Cloud Shell, indem Sie auf das Symbol oben rechts auf dem Bildschirm klicken:

Legen Sie abschließend mithilfe von Cloud Shell die Standardzone und die Projektkonfiguration fest:

$ gcloud config set compute/zone us-central1-b
$ gcloud config set compute/region us-central

Du kannst auch verschiedene Zonen auswählen. Weitere Informationen finden Sie in der Dokumentation zu Regionen und Zonen.

In diesem Abschnitt erstellen Sie mit Cloud Launcher Compute Engine-Instanzen, auf denen nginx+ ausgeführt wird. Wir benötigen diese Instanzen, um Monitoring und Benachrichtigungen zu demonstrieren. Sie können eine Compute Engine-Instanz über die grafische Konsole oder über die Befehlszeile erstellen. Dieses Lab führt Sie durch die Befehlszeile.

Jetzt starten wir.

Mit gcloud können Sie Ihre Projekt-ID festlegen:

$ gcloud config set project PROJECT_ID



Kopieren Sie ihn und fügen Sie ihn so ein:

$ for i in {1..3}; do \
gcloud compute instances create "nginx-plus-$i" \
--machine-type "n1-standard-1" \
--metadata  "google-cloud-marketplace-solution-key=nginx-public:nginx-plus" \
--maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/cloud-platform" \
--tags "http-server","google-cloud-marketplace" \
--image "https://www.googleapis.com/compute/v1/projects/nginx-public/global/images/nginx-plus-ubuntu1404-v20150916-final" \
--boot-disk-size "10" --boot-disk-type "pd-standard" \
--boot-disk-device-name "nginx-plus-$i"; done

Sie erhalten Warnungen zur Laufwerksgröße und dann die folgende Ausgabe, wenn jede VM erstellt wird:

NAME         ZONE          MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP     STATUS
nginx-plus-1 us-central1-b n1-standard-2                X.X.X.X  X.X.X.X      RUNNING
...

Notieren Sie sich später die EXTERNAL_IP. Diese sind später wichtig.

Der Vorgang kann einige Minuten dauern.

Die Google Cloud Platform lässt standardmäßig nur wenige Portzugriffe zu. Da wir demnächst auf Nginx zugreifen, können Sie Port 80 in der Firewallkonfiguration aktivieren:

$ gcloud compute firewall-rules create allow-80 --allow tcp:80 --target-tags "http-server"
Created [...].
NAME     NETWORK SRC_RANGES RULES  SRC_TAGS TARGET_TAGS
allow-80 default 0.0.0.0/0  tcp:80 http-server

Dadurch wird eine Firewallregel mit dem Namen allow-80 erstellt, die die folgenden Standardwerte hat:

  • Die Liste der IP-Adressblöcke, die eingehende Verbindungen herstellen dürfen (--source-ranges), ist auf 0.0.0.0/0 (Überall) festgelegt.
  • Die Liste der Instanz-Tags, die die Gruppe von Instanzen im Netzwerk angibt, die eingehende Verbindungen akzeptieren können, ist auf keine Angabe gesetzt. Die Firewallregel gilt also für alle Instanzen.

Führe gcloud compute firewall-rules create --help aus, um alle Standardeinstellungen zu sehen.

Nachdem die erste Instanz erstellt wurde, können Sie testen, ob nginx ausgeführt wird und über http://EXTERNAL_IP/ zugänglich ist. Dabei ist EXTERNAL_IP die öffentliche IP-Adresse von nginx-plus-1. Sie sollten dann die Nginx-Seite sehen:

Sie können auch Ihre ausgeführten Instanzen aufrufen, indem Sie Folgendes eingeben:

$ gcloud compute instances list

Google Stackdriver ist eine leistungsstarke Monitoringlösung, die verschiedene Tools umfasst, um Ihre cloudbasierte Anwendungen zu überwachen und zu analysieren. Sie können mit Stackdriver die Leistungsmesswerte einsehen, Benachrichtigungen einrichten und empfangen, eigene benutzerdefinierte Dashboards und Messwerte hinzufügen, Logs und Traces anzeigen, integrierte Dashboards einrichten – alles von einem zentralen Ort aus.

Im nächsten Schritt erfahren Sie, wie Sie Stackdriver aktivieren und mit der Konsole arbeiten.

Standardmäßig befindet sich Google Stackdriver derzeit in der Betaphase und ist für neue Projekte nicht aktiviert. Klicken Sie dazu links in der Navigationsleiste auf „Überwachung“. Möglicherweise müssen Sie nach unten scrollen, um die Option zu sehen.

Klicken Sie im nächsten Bildschirm auf „Monitoring aktivieren“ und warten Sie eine Minute, bis er aktiviert ist.

Sobald die Funktion aktiviert ist, werden die Inhalte geändert und du siehst den Text unten. Klicken Sie auf „Monitoring“ und beginnen Sie mit der Analyse. Sie müssen sich bei Google anmelden und dann zur Stackdriver-Konsole für Ihr Projekt weitergeleitet werden. Dort können Sie Monitoring-Aufgaben ausführen und analysieren.

Machen wir uns mit der Startseite vertraut.

  1. Oben: Mit dieser Option können Sie verschiedene Ansichten / Kontexte auswählen und auf alle verfügbaren Stackdriver-Aktionen zugreifen.
  2. Dashboards: Dies sind Dashboards von Messwerten und Ereignissen, die überwacht werden. Ursprünglich sind dies vordefinierte System-Dashboards, die auf den Ressourcen in Ihrem Projekt basieren. Sie können aber auch eigene, benutzerdefinierte Dashboards erstellen.
  3. Verfügbarkeitsdiagnosen: Dabei werden regelmäßig Ressourcen für Nutzer auf Verfügbarkeit geprüft und Benachrichtigungen aktiviert, wenn diese nicht verfügbar sind.
  4. Gruppenliste: Gruppen werden verwendet, um Ressourcen mit gemeinsamen Eigenschaften und Merkmalen zu gruppieren. Auf diese Weise können sie als Gruppe oder Cluster für Aufgaben wie Monitoring und Benachrichtigungen verarbeitet werden. Sie können automatisch erkannt und vom Nutzer definiert sein.
  5. Bereich „Vorfälle“: Im Bereich „Vorfälle“ werden Benachrichtigungen zu Vorfällen erfasst. Sie sehen erst dann etwas, wenn Sie Benachrichtigungsrichtlinien definieren.
  6. Ereignisprotokoll: Enthält Ereignisse, die mit Ihren überwachten Ressourcen zusammenhängen, z. B. Instanzänderungen, Vorfallereignisse

Bevor wir die Diagramme untersuchen, stellen Sie fest, dass die meisten Zeilen nach der ersten Initialisierung der Instanz abgeflacht wurden. Lassen Sie uns prüfen, ob wir einige von ihnen flach auflegen können, indem wir eine Belastung auf einer der Instanzen erzeugen.

So stellen Sie über die Cloud Shell-Befehlszeile eine SSH-Verbindung zur Instanz her:

$ gcloud compute ssh nginx-plus-1
...
Do you want to continue (Y/n)? Y
...
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
...

yourusername@nginx-plus-1:~$

Das ist ziemlich einfach. (Achten Sie in der Produktionsumgebung darauf, eine Passphrase einzugeben.) Beachten Sie, dass Sie möglicherweise nicht aufgefordert werden, eine Passphrase hinzuzufügen.

Alternativ können Sie auch direkt über die Konsole eine SSH-Verbindung zur Instanz herstellen. Rufen Sie dazu Compute Engine > VM-Instanzen auf und klicken Sie auf SSH.

In the SSH window, type:

yourusername@nginx-plus-1:~$ sudo apt-get install rand
yourusername@nginx-plus-1:~$ for i in {1..10}; do dd if=/dev/zero of=/dev/null count=$(rand -M 80)M; sleep 60; done &

Die Instanz nginx-plus-1-CPU wird jetzt geladen. Wir können zum Tab mit dem Stackdriver-Dashboard zurückkehren und es genauer betrachten. Bevor wir jedoch zur Seite mit den Stackdriver-Dashboards zurückkehren, lassen Sie uns den Cloud Logging-Agent installieren.

Fetch and install the script:

yourusername@nginx-plus-1:~$ curl -sS https://dl.google.com/cloudagents/add-logging-agent-repo.sh | sudo bash /dev/stdin --also-install

Achten Sie bei der Installation in der Produktion auf den SHA-256-Hash. Weitere Informationen zum Installationsvorgang

Jetzt können Sie zur Google Stackdriver-Konsole zurückkehren.

Machen Sie sich mit der Navigation und der Verwendung von Dashboards und Diagrammen vertraut. Bewegen Sie den Mauszeiger auf die Diagrammlinien und sehen Sie sich an, was passiert. Ändern Sie die Dauer für Diagramme, die sich oben rechts befinden. Sie können immer zur Ansicht „&home“ zurückkehren, indem Sie links oben in der Konsole auf das Stackdriver-Logo klicken.

Sehen Sie sich das Diagramm zur CPU-Auslastung an:

Einige Elemente im Diagramm sind:

  • Die markierte Zeile ist der aktuell ausgewählte Messwert. In einem Diagramm können mehrere Messwerte dargestellt werden.
  • Die graue horizontale Linie stellt den Zeitpunkt dar, auf den der Mauszeiger bewegt wird.
  • Unten sehen Sie den Namen der Ressource und den Wert zu dem ausgewählten Zeitpunkt.
  • Oben im Diagramm sind farbige Punkte dargestellt, die im Ereignisprotokoll aufgeführt werden. Wenn Sie darauf klicken, wird eine Liste der Ereignisse angezeigt. Hinweis: Möglicherweise werden keine Einträge angezeigt, wenn du noch keine Termine hast.
  • Rechts oben im Diagramm finden Sie drei Steuerelemente (von links nach rechts):
  • Liste mit Messwerten unter dem Diagramm ein-/ausblenden
  • Vollbildmodus ein-/ausschalten
  • Menü mit verschiedenen Extras (Musst du den Röntgenmodus ausprobieren, sobald dein Diagramm sehr umfangreich ist). Beachten Sie die Option „Protokolle anzeigen“. Diese finden Sie später.

Mit Verfügbarkeitsdiagnosen können Sie schnell den Status jeder Webseite, Instanz oder Gruppe von Ressourcen überprüfen. Jede konfigurierte Diagnose wird regelmäßig von verschiedenen weltweiten Standorten kontaktiert. Verfügbarkeitsdiagnosen können als Bedingungen in den Definitionen von Benachrichtigungsrichtlinien verwendet werden.

Sie können Ihre Prüfungen und deren Status anzeigen, indem Sie im Menü oben Benachrichtigungen und Verfügbarkeitsdiagnosen auswählen. Sie finden die Abschnitte für Verfügbarkeitsdiagnosen auch im Google Stackdriver-Dashboard und auf Seiten für spezielle Ressourcen. Wenn bei Verfügbarkeitsdiagnosen eine Gruppe von Ressourcen abgedeckt ist, können Sie die Statusüberprüfung der einzelnen Mitglieder der Gruppe maximieren.

Eine Verfügbarkeitsdiagnose erstellen Suchen Sie auf dem Stackdriver-Startbildschirm nach dem Verfügbarkeitsdiagnose-Widget:

Ein neues Pop-up wird angezeigt. Wir können Verfügbarkeitsdiagnosen für eine einzelne Ressource oder Ressourcengruppe konfigurieren, benutzerdefinierte Header und Nutzlasten verwenden, Authentifizierung hinzufügen und weitere Optionen nutzen. Vorerst verwenden wir einfach eine Standard-HTTP-Prüfung, bei der die automatisch erstellte nginx-Gruppe jede Minute geprüft wird.

Im Screenshot unten sind die verschiedenen Optionen aufgeführt:

Klicken Sie auf die Schaltfläche „Test“ und prüfen Sie, ob die Endpunkte erreichbar sind (Sie sollten drei grüne Markierungen sehen) und klicken Sie auf „Speichern“. Hinweis: Wenn keine Fehler zurückgegeben werden, können Sie trotzdem mit dem Lab fortfahren, da es sich dabei möglicherweise nur um ein Problem mit dem Test handelt.

Als Nächstes erhalten Sie das Kästchen „Verfügbarkeitsdiagnose erstellt“. Sie werden gefragt, ob Sie eine Benachrichtigungsrichtlinie für diese Prüfung erstellen möchten. Lassen Sie uns dies im nächsten Abschnitt erledigen – klicken Sie noch nichts an.

Sie können Benachrichtigungsrichtlinien einrichten, um Bedingungen festzulegen, die bestimmen, ob Ihre Cloud-Dienste und -Plattformen normal funktionieren. Cloud Monitoring bietet viele verschiedene Arten von Messwerten und Systemdiagnosen, die Sie in den Richtlinien verwenden können.

Wenn eine Bedingung einer Benachrichtigungsrichtlinie verletzt wird, wird ein Vorfall erstellt und in der Stackdriver-Konsole im Abschnitt „Vorfall“ angezeigt. Die Adressaten können den Erhalt der Benachrichtigung bestätigen und den Vorfall schließen, wenn er behandelt wurde.

Klicken Sie auf „Benachrichtigungsrichtlinie erstellen“ und fahren Sie mit der Konfiguration der Richtlinie fort.

Jetzt sollte der folgende Bildschirm angezeigt werden:

Geben Sie einen Namen für die Richtlinie ein: "Verfügbarkeitsdiagnose für nginx Gruppe"

Klicken Sie im Abschnitt „Benachrichtigungsmethode“ auf „Benachrichtigung hinzufügen“.

Geben Sie die mit Ihrem Google Cloud-Konto verknüpfte E-Mail-Adresse ein. Scrollen Sie auf dem Bildschirm nach unten und klicken Sie auf „Richtlinie speichern“.

Klicken Sie links oben auf das Logo, um zur Stackdriver-Startseite zurückzukehren.

Jetzt sollten Sie im Dashboard im Bereich „Verfügbarkeitsdiagnosen“ die Verfügbarkeitsdiagnose sehen. Der Status sollte vorerst grün sein.

Scrollen Sie nach unten zum Ereignisprotokoll, das Ereignis angezeigt wird, dass eine Benachrichtigungsrichtlinie erstellt wurde.

Jetzt erstellen wir mal Probleme.

Schauen wir mal, was passiert, wenn wir den Ngnix-Dienst beenden.

Stellen Sie über die Cloud Shell-Befehlszeile eine weitere SSH-Verbindung zur Instanz her:

$ gcloud compute ssh nginx-plus-1

Und geben Sie Folgendes ein:

yourusername@nginx-plus-1:~$ sudo service nginx stop

Jetzt sollte die von uns erstellte Verfügbarkeitsdiagnose fehlschlagen. Aus diesem Grund wird ein Vorfall erstellt und eine Benachrichtigungs-E-Mail wird an die oben eingegebene Adresse gesendet. Es dauert eine Minute, bis die Bedingung erkannt wird. Sie sollten sich also die Dauer von 1 Minute merken, bevor Sie die nginx-Gruppenseite untersuchen.

Es gibt mehrere Möglichkeiten, eine bestimmte Ressourcengruppe aufzurufen:

  1. Du kannst auf der Startseite auf den Namen der Gruppe klicken. Dies wechselt zu einem Dashboard, das speziell zur Überwachung der Gruppenressourcen dient. Auch das Dashboard lässt sich anpassen.



  2. Wählen Sie im Menü der obersten Ebene „Gruppen“ aus und suchen Sie dann nach der gewünschten Gruppe.

Klicken Sie jetzt auf die Schaltfläche für die automatische Aktualisierung, um sicherzustellen, dass Dashboards automatisch aktualisiert werden. Das Symbol wird rot.

Sie sehen nun ein Dashboard, das spezifisch für die automatisch erstellte nginx-Gruppe ist. Auf der rechten Seite sehen Sie Grafiken zu mehreren wichtigen Messwerten für die Gruppe. Mit anderen Worten: Diese Grafiken beziehen sich auf alle Ressourcen in der nginx-Gruppe (unsere drei nginx+ VMs, die wir zuvor erstellt haben).

Auf der linken Seite sehen Sie verschiedene Informationen zur Gruppe:

  • Vorfallstatus
  • Verfügbarkeitsdiagnosen
  • Ereignisprotokoll
  • Eine Liste der Ressourcen (Instanzen, Volumes usw.)

Hinweis: Diese beziehen sich nur auf die Gruppe. Daher enthält das Ereignisprotokoll nur Ereignisse für die Gruppe.

Sie können auf verschiedene Ressourcen oder Untergruppen klicken, um zu ihren eigenen Dashboards zu wechseln. Wenn Sie zum Beispiel auf nginx-plus-1 klicken, gelangen Sie zu einem Dashboard, das nur aus Messwerten und Prüfungen für diese Instanz besteht. Jetzt ausprobieren:

Stackdriver-Vorfälle werden geöffnet, wenn eine Gruppe von Benachrichtigungsbedingungen ein bestimmtes Kriterium erfüllt. In unserem Fall haben wir eine Benachrichtigung für die nginx-Verfügbarkeitsdiagnose eingerichtet, die bei nginx-plus-1 derzeit nicht funktioniert. Mit Vorfällen können Sie die aktuellen Bedingungen im Auge behalten und bei der Zusammenarbeit mit anderen Teammitgliedern zusammenarbeiten.

Lass uns den Vorfall bestätigen, damit wir andere Nutzer über die Überprüfung informieren können:

Beachten Sie, dass der Status des Vorfalls von "Offen" in "Bestätigt" geändert wird. Die Situation bleibt bestehen (Verstoß gegen die Bedingungen der Benachrichtigungsrichtlinien), aber Sie signalisieren die Teammitglieder, dass Sie daran arbeiten. Dies wird auch im Ereignisprotokoll protokolliert.

Vorfälle können manuell behoben oder automatisch behoben werden. Um Letzteres zu sehen, erstellen Sie eine SSH-Verbindung zu nginx-plus-1 und beheben Sie das Problem:

yourusername@nginx-plus-1:~$ sudo service nginx start

Jetzt wird der Vorfall automatisch behoben, sobald die Verfügbarkeitsdiagnose wieder normal funktioniert. Sie können den Fehler auch selbst beheben, indem Sie den Menüpunkt „Klären“ auswählen.

Cloud Logging ist eine Logging-as-a-Service-Lösung, die eine praktische und zentrale Möglichkeit zum Aufrufen und Abfragen von Logs aus mehreren Quellen bietet. Sie können Logs auch verwenden, um sie an andere Ziele zu exportieren (Google Cloud Storage, Google BigQuery oder Google Cloud Pub/Sub).

Wählen Sie über das Cloud Console-Menü im linken Menü die Loganzeige aus.

Sie werden zur Loganzeige weitergeleitet, in der Sie vordefinierte Abfragen verwenden oder eigene benutzerdefinierte Abfragen erstellen und speichern, einen Livestream von Logs aus mehreren Ressourcen in Ihrer Cloud-Bereitstellung abrufen, Messwerte aus Logs erstellen und exportieren können.

Hier sind einige praktische Steuerelemente, mit denen Sie schnell relevante Informationen herausfiltern können:

  1. Nach Ressourcentypen filtern
  2. Nach bestimmten Logtypen der ausgewählten Ressourcen filtern
  3. Bestimmte Protokollebenen filtern
  4. Nach bestimmten Daten filtern, um frühere Probleme zu untersuchen
  5. Kontinuierliches Streaming aktivieren/deaktivieren
  6. Ein Suchfeld für die Suche nach Text, Labels oder regulären Ausdruck

Jetzt können Sie sich auf bestimmte Logs beschränken.

Wählen Sie im Selektor der Ressource (1 im Screenshot) die Option Compute Engine -> Alle Ressourcentypen aus.

Wählen Sie im Auswahlbereich für den Logtyp (2 im Screenshot) die Option „nginx-access“ aus, um alle Zugriffslogs aufzurufen.

Aktivieren Sie nun das kontinuierliche Streaming (5), um eingehende Protokolle zu erhalten. Wenn Sie keine neuen Logs sehen, geben Sie die externe IP-Adresse für eine der nginx-Plus-VMs in Ihrem Browser ein.

In diesem Codelab werden keine Protokolle gespeichert. Du kannst es dir aber später ansehen. Weitere Informationen zur Navigation des Betrachters findest du hier. Wenn Sie mehr darüber erfahren möchten, wofür Sie Cloud Logging verwenden können, sehen Sie sich hier das übergeordnete Verzeichnis für die entsprechende Dokumentation an.

Lassen Sie dann die Rechenressourcen freigeben, die im Code-Lab erstellt wurden. Führen Sie in Cloud Shell die folgenden Befehle aus:

$ for i in {1..3}; do \
gcloud -q --user-output-enabled=false compute instances delete nginx-plus-$i ; done

Gehen Sie als Nächstes zur Google Stackdriver Console (über das Menü der Cloud Console auf der linken Seite) und entfernen Sie die von uns erstellten Verfügbarkeitsdiagnosen und Benachrichtigungsrichtlinien. Das ist über die Menüpunkte der obersten Ebene „Benachrichtigungen &> Richtlinienübersicht und Benachrichtigungen – Verfügbarkeitsdiagnosen möglich.

Sie können jetzt Ihre cloudbasierten Anwendungen überwachen.

Behandelte Themen

  • Machen Sie sich mit der Stackdriver-Startseite vertraut.
  • Dashboards und Diagramme
  • Verfügbarkeitsdiagnose wird erstellt.
  • Einfache Benachrichtigungsrichtlinie erstellen
  • Mit Benachrichtigungsvorfällen arbeiten
  • Loganzeige aufrufen.

Nächste Schritte

  • Benutzerdefinierte Dashboards erstellen
  • Lernen Sie die verschiedenen Optionen zum Erstellen einer Benachrichtigungsrichtlinie kennen.
  • Lernen Sie die verschiedenen Optionen kennen, die bei der Verwendung von Cloud Logging verfügbar sind.

Weitere Informationen

Feedback geben

  • Nehmen Sie sich bitte einen Moment Zeit, um an unserer kurzen Umfrage teilzunehmen.