Zugriff auf über 700 Labs und Kurse nutzen

Anwendungen in Google Kubernetes Engine debuggen

Lab 1 Stunde 15 Minuten universal_currency_alt 5 Guthabenpunkte show_chart Mittelstufe
info Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Zugriff auf über 700 Labs und Kurse nutzen

GSP736

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

Cloud Logging und das zugehörige Tool „Cloud Monitoring“ sind Produkte mit vollem Funktionsumfang, die beide tief in die Google Kubernetes Engine (GKE) eingebunden sind. In diesem Lab erfahren Sie, wie Cloud Logging mit GKE-Clustern und -Anwendungen funktioniert, und lernen anhand gängiger Anwendungsfälle für das Logging einige Best Practices für die Logerfassung kennen.

Lernziele

Aufgaben in diesem Lab:

  • Probleme mit Cloud Monitoring erkennen
  • Fehler in einer in GKE ausgeführten Anwendung mit Cloud Logging beheben

Im Lab verwendete Demo-App

Anhand eines konkreten Beispiels beheben Sie Fehler in einer Mikrodienst-Demo-App, die in einem GKE-Cluster bereitgestellt wurde. In dieser Demo-App gibt es viele Mikrodienste und Abhängigkeiten zwischen ihnen. Sie generieren Traffic mit einem Lastgenerator und verwenden dann Logging, Monitoring und GKE, um den Fehler zu erkennen (Benachrichtigung/Messwerte), mit Logging die Ursache zu ermitteln und das Problem mit Logging und Monitoring zu beheben bzw. zu bestätigen.

Diagramm der Cloud Logging-Architektur

Einrichtung und Anforderungen

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:

    • Schaltfläche „Google Cloud Console öffnen“
    • Restzeit
    • Temporäre Anmeldedaten für das Lab
    • Ggf. weitere Informationen für dieses Lab
  2. Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich „Details zum Lab“.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein. Symbol für das Navigationsmenü und Suchfeld

Cloud Shell aktivieren

Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren Symbol für Cloud Shell-Aktivierung.

  2. Klicken Sie sich durch die folgenden Fenster:

    • Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
    • Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.

Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:

Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}

gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.

  1. (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
  1. Klicken Sie auf Autorisieren.

Ausgabe:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Um das aktive Konto festzulegen, führen Sie diesen Befehl aus: $ gcloud config set account `ACCOUNT`
  1. (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project

Ausgabe:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.

Aufgabe 1: Infrastruktur einrichten

Stellen Sie eine Verbindung zu einem Google Kubernetes Engine-Cluster her und prüfen Sie, ob er korrekt erstellt wurde.

  1. Mit dem folgenden Befehl können Sie den Status des Clusters aufrufen:
gcloud container clusters list

Als Status des Clusters sollte „PROVISIONING“ angezeigt werden.

  1. Warten Sie einen Moment und führen Sie den obigen Befehl noch einmal aus, bis der Status „RUNNING“ angezeigt wird. Das kann einige Minuten dauern.

  2. Prüfen Sie, ob der Cluster mit dem Namen central erstellt wurde.

Sie können den Fortschritt auch in der Cloud Console unter Navigationsmenü > Kubernetes Engine > Cluster verfolgen.

  1. Sobald der Status „RUNNING“ angezeigt wird, können Sie mit dem folgenden Befehl die Anmeldedaten für den Cluster abrufen:
gcloud container clusters get-credentials central --zone {{{project_0.startup_script.zone | ZONE}}}

Ausgabe:

Fetching cluster endpoint and auth data. kubeconfig entry generated for central.
  1. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Knoten erstellt wurden:
kubectl get nodes

Ihre Ausgabe sollte in etwa so aussehen.

Ausgabe:

NAME STATUS ROLES AGE VERSION gke-central-default-pool-5ff4130f-qz8v Ready 24d v1.27.2-gke.1200 gke-central-default--pool-5ff4130f-ssd2 Ready 24d v1.27.2-gke.1200 gke-central-default--pool-5ff4130f-tz63 Ready 24d v1.27.2-gke.1200 gke-central-default--pool-5ff4130f-zfmn Ready 24d v1.27.2-gke.1200

Gemini Code Assist in der Cloud Shell-IDE aktivieren

Sie können Gemini Code Assist in einer integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) wie Cloud Shell verwenden, um Unterstützung beim Programmieren zu erhalten oder Probleme mit Ihrem Code zu lösen. Bevor Sie Gemini Code Assist verwenden können, müssen Sie das Tool aktivieren.

  1. Aktivieren Sie in Cloud Shell die Gemini for Google Cloud API mit dem folgenden Befehl:
gcloud services enable cloudaicompanion.googleapis.com
  1. Klicken Sie in der Cloud Shell-Symbolleiste auf Editor öffnen.
Hinweis: Klicken Sie zum Öffnen des Cloud Shell-Editors in der Cloud Shell-Symbolleiste auf Editor öffnen. Sie können zwischen Cloud Shell und dem Code-Editor wechseln. Klicken Sie dazu entsprechend auf Editor öffnen oder Terminal öffnen.
  1. Klicken Sie im linken Bereich auf das Symbol Einstellungen und suchen Sie unter Einstellungen nach Gemini Code Assist.

  2. Suchen Sie nach Gemini Code Assist: Aktivieren und prüfen Sie, ob das Kästchen ausgewählt ist. Schließen Sie dann die Einstellungen.

  3. Klicken Sie in der Statusleiste unten auf dem Bildschirm auf Cloud Code – kein Projekt.

  4. Autorisieren Sie das Plug-in wie beschrieben. Wenn kein Projekt automatisch ausgewählt wurde, klicken Sie auf Google Cloud-Projekt auswählen und wählen Sie aus.

  5. Prüfen Sie, ob Ihr Google Cloud-Projekt () in der Cloud Code-Statusmeldung in der Statusleiste angezeigt wird.

Aufgabe 2: Anwendung bereitstellen

Als Nächstes stellen Sie eine Mikrodienstanwendung namens „Hipster Shop“ in Ihrem Cluster bereit, um eine Arbeitslast zu erstellen, die Sie überwachen können.

  1. Führen Sie den folgenden Befehl aus, um das Repository zu klonen:
git clone https://github.com/xiangshen-dk/microservices-demo.git
  1. Wechseln Sie mit dem folgenden Befehl in das Verzeichnis microservices-demo:
cd microservices-demo
  1. Gehen Sie im Datei-Explorer des Cloud Shell-Editors zu microservices-demo > release > kubernetes-manifests.yaml.

Mit den KI-basierten Funktionen von Gemini Code Assist können Sie Änderungen an Ihrem Code direkt im Code-Editor vornehmen. In diesem Fall lassen Sie sich von Gemini Code Assist beim Erklären der Datei kubernetes-manifests.yaml unterstützen, um das Onboarding eines neuen Teammitglieds zu erleichtern.

  1. Öffnen Sie die Datei kubernetes-manifests.yaml. Dadurch wird Gemini Code Assist aktiviert. Dies lässt sich am Symbol Gemini Code Assist: Intelligente Aktionen rechts oben im Editor ablesen.

  2. Klicken Sie auf das Gemini Code Assist: Intelligente Aktionen-Symbol Gemini Code Assist: Intelligente Aktionen und wählen Sie Erkläre mir das aus.

  3. Gemini Code Assist öffnet ein Chatfenster mit dem vorausgefüllten Prompt Erkläre mir das. Ersetzen Sie im Inline-Textfeld des Code Assist-Chats den vorausgefüllten Prompt durch Folgendes und klicken Sie auf Senden:

Stelle als Kubernetes-Architekt bei Cymbal AI eine formale und umfassende Erklärung der Datei „kubernetes-manifests.yaml“ für neue Teammitglieder bereit. Die Erklärung sollte: * die wichtigsten Komponenten der Konfigurationsdatei im Detail beschreiben * die wichtigsten Dienste und ihre Funktionen beschreiben * die gängigen Konfigurationselemente beschreiben * beschreiben, was mit der Konfiguration bereitgestellt wird Nimm für die vorgeschlagenen Verbesserungen keine Änderungen an dieser Datei vor.

Die Erklärung für den Code in der Datei kubernetes-manifests.yaml wird im Gemini Code Assist-Chat angezeigt.

  1. Führen Sie den folgenden Befehl aus, um die Anwendung mit kubectl zu installieren:
kubectl apply -f ./release/kubernetes-manifests.yaml
  1. Führen Sie den folgenden Befehl aus, um zu prüfen, ob alles korrekt ausgeführt wird:
kubectl get pods

Die Ausgabe sollte in etwa so aussehen:

Ausgabe:

NAME READY STATUS RESTARTS AGE adservice-55f94cfd9c-4lvml 1/1 Running 0 20m cartservice-6f4946f9b8-6wtff 1/1 Running 2 20m checkoutservice-5688779d8c-l6crl 1/1 Running 0 20m currencyservice-665d6f4569-b4sbm 1/1 Running 0 20m emailservice-684c89bcb8-h48sq 1/1 Running 0 20m frontend-67c8475b7d-vktsn 1/1 Running 0 20m loadgenerator-6d646566db-p422w 1/1 Running 0 20m paymentservice-858d89d64c-hmpkg 1/1 Running 0 20m productcatalogservice-bcd85cb5-d6xp4 1/1 Running 0 20m recommendationservice-685d7d6cd9-pxd9g 1/1 Running 0 20m redis-cart-9b864d47f-c9xc6 1/1 Running 0 20m shippingservice-5948f9fb5c-vndcp 1/1 Running 0 20m
  1. Wiederholen Sie den Befehl, bis alle Pods den Status Running haben und fahren Sie dann mit dem nächsten Schritt fort.

Klicken Sie auf Fortschritt prüfen. Anwendung bereitstellen

  1. Führen Sie den folgenden Befehl aus, um die externe IP-Adresse der Anwendung abzurufen. Dieser Befehl gibt erst dann eine IP-Adresse zurück, wenn der Dienst bereitgestellt wurde. Möglicherweise müssen Sie den Befehl also wiederholen, bis eine externe IP-Adresse zugewiesen wurde:
export EXTERNAL_IP=$(kubectl get service frontend-external | awk 'BEGIN { cnt=0; } { cnt+=1; if (cnt > 1) print $4; }')
  1. Führen Sie zum Schluss den folgenden Befehl aus, um zu prüfen, ob die Anwendung läuft:
curl -o /dev/null -s -w "%{http_code}\n" http://$EXTERNAL_IP

Die Bestätigung sollte in etwa so aussehen:

Ausgabe:

200

Nach der Bereitstellung der Anwendung können Sie in der Cloud Console den Status aufrufen.

Auf der Seite Kubernetes Engine > Arbeitslasten sehen Sie, dass alle Pods in Ordnung sind.

Seite „Arbeitslasten“

  1. Wählen Sie Gateways, Dienste und eingehender Traffic aus und klicken Sie auf den Tab Dienste, um zu prüfen, ob alle Dienste in Ordnung sind. Bleiben Sie auf diesem Bildschirm, um das Monitoring für die Anwendung einzurichten.

Aufgabe 3: App öffnen

  • Scrollen Sie nach unten zu frontend-external und klicken Sie auf die Endpunkt-IP des Dienstes.

Seite „Gateways, Dienste und eingehender Traffic“ mit hervorgehobener externer IP-Adresse des Frontends

Die Anwendung sollte geöffnet werden und es sollte eine Seite wie die folgende zu sehen sein:

Webseite von Online Boutique mit Produktkacheln

Aufgabe 4: Logbasierten Messwert erstellen

In dieser Aufgabe konfigurieren Sie Cloud Logging, um einen logbasierten Messwert zu erstellen. Das ist ein benutzerdefinierter Messwert in Cloud Monitoring, der aus Logeinträgen erstellt wird. Logbasierte Messwerte eignen sich gut, um die Anzahl der Logeinträge zu zählen und die Verteilung eines Werts in Ihren Logs zu verfolgen.

In diesem Fall verwenden Sie den logbasierten Messwert, um die Anzahl der Fehler in Ihrem Frontend-Dienst zu zählen. Sie können den Messwert dann in Dashboards und Benachrichtigungen verwenden.

  1. Kehren Sie zur Cloud Console zurück und klicken Sie im Navigationsmenü auf Logging und dann auf Log-Explorer.

Seite „Log-Explorer“

  1. Aktivieren Sie Abfrage anzeigen und fügen Sie im Feld Query Builder die folgende Abfrage hinzu:
resource.type="k8s_container" severity=ERROR labels."k8s-pod/app": "recommendationservice"

Die Seite „Query Builder“ mit den drei Zeilen der Abfrage oben

  1. Klicken Sie auf Abfrage ausführen.

Mit der verwendeten Abfrage können Sie alle Fehler aus dem Frontend-Pod finden. Da es noch keine Fehler gibt, sollten Sie jetzt keine Ergebnisse sehen.

  1. Klicken Sie auf das Drop-down-Menü Aktionen und wählen Sie Messwert erstellen aus, um den logbasierten Messwert zu erstellen.

Option „Messwert erstellen“ in der Benutzeroberfläche

  1. Nennen Sie den Messwert Error_Rate_SLI und klicken Sie auf Messwert erstellen, um den logbasierten Messwert zu erstellen:

Dialogfeld „Logmesswert erstellen“ mit dem ausgefüllten Feld „Name des Logmesswerts“

Der Messwert wird Ihnen jetzt auf der Seite „Logbasierte Messwerte“ unter „Benutzerdefinierte Messwerte“ angezeigt.

Klicken Sie auf Fortschritt prüfen. Logbasierten Messwert erstellen

Aufgabe 5: Benachrichtigungsrichtlinie erstellen

Durch Benachrichtigungen werden Sie rechtzeitig über Probleme in Ihren Cloud-Anwendungen informiert und können sie dann umgehend beheben.

In dieser Aufgabe verwenden Sie Cloud Monitoring, um die Verfügbarkeit Ihres Frontend-Dienstes zu überwachen. Dazu erstellen Sie eine Benachrichtigungsrichtlinie, die auf dem zuvor erstellten logwertbasierten Messwert für Frontend-Fehler basiert. Wenn die Bedingung der Benachrichtigungsrichtlinie erfüllt ist, erstellt Cloud Monitoring einen Vorfall und zeigt ihn in der Cloud Console an.

  1. Öffnen Sie im Navigationsmenü den Bereich Monitoring und klicken Sie dann auf Benachrichtigungen.

  2. Nachdem der Arbeitsbereich erstellt wurde, klicken Sie oben auf Richtlinie erstellen.

Hinweis: Klicken Sie bei Bedarf auf Jetzt ausprobieren, um den aktualisierten Ablauf zum Erstellen von Benachrichtigungen zu verwenden.
  1. Klicken Sie auf das Drop-down-Menü Messwert auswählen. Heben Sie die Auswahl des Kästchens Aktiv auf.

  2. Geben Sie im Feld Nach Ressourcen- oder Messwertnamen filtern den Wert Error_Rate ein.

  3. Klicken Sie auf Kubernetes-Container > Logbasierter Messwert. Wählen Sie logging/user/Error_Rate_SLI aus und klicken Sie auf Anwenden.

Auf Ihrem Bildschirm sollte nun Folgendes angezeigt werden:

Die Seite „Messwert auswählen“

  1. Setzen Sie Funktion für rollierendes Zeitfenster auf Rate.

  2. Klicken Sie auf Weiter.

  3. Legen Sie 0,5 als Grenzwert fest.

Wie erwartet gibt es keine Fehler und Ihre Anwendung erfüllt das Verfügbarkeits-SLO (Service Level Objective).

  1. Klicken Sie noch einmal auf Weiter.

  2. Deaktivieren Sie Benachrichtigungskanal verwenden.

  3. Geben Sie einen Namen wie Error Rate SLI für die Benachrichtigung ein und klicken Sie auf Weiter.

  4. Prüfen Sie die Benachrichtigung und klicken Sie auf Richtlinie erstellen.

Hinweis: Für dieses Lab erstellen Sie keinen Benachrichtigungskanal. Für Ihre Produktionsanwendungen sollten Sie dies jedoch tun, da Sie so Benachrichtigungen per E-Mail, mobiler App, SMS, Pub/Sub und Webhooks senden können.

Klicken Sie auf Fortschritt prüfen. Benachrichtigungsrichtlinie erstellen

Anwendungsfehler auslösen

In diesem Abschnitt verwenden Sie einen Lastgenerator, um Traffic für Ihre Webanwendung zu erzeugen. Da in diese Version der Anwendung absichtlich ein Fehler eingebaut wurde, löst ein bestimmtes Traffic-Volumen Fehler aus. Sie gehen die Schritte durch, um den Fehler zu identifizieren und zu beheben.

  1. Wählen Sie im Navigationsmenü die Option Kubernetes Engine und dann Gateways, Dienste und eingehender Traffic aus. Klicken Sie auf den Tab Dienste.

  2. Suchen Sie nach dem Dienst loadgenerator-external und klicken Sie auf den Link endpoints.

Seite „Gateways, Dienste und eingehender Traffic“ mit dem Tab „Dienste“, hervorgehobenem Dienst „loadgenerator-external“ und dem Endpunktlink

Alternativ können Sie einen neuen Browsertab oder ein neues Browserfenster öffnen und die IP-Adresse in das URL-Feld kopieren, zum Beispiel: http://\[loadgenerator-external-ip\].

Sie sollten sich jetzt auf der Seite des Lastgenerators Locust befinden:

Die Seite des Lastgenerators Locust

Locust ist ein Open-Source-Tool zur Lastgenerierung, mit dem Sie eine Webanwendung testen können. Es kann eine bestimmte Anzahl von Nutzerkonten simulieren, die gleichzeitig und in einem bestimmten Rhythmus auf die Anwendungsendpunkte zugreifen.

  1. Simulieren Sie 300 Nutzer, die mit einer Hatch-Rate von 30 auf die App zugreifen. Locust fügt 30 Nutzer pro Sekunde hinzu, bis 300 Nutzer erreicht sind.

  2. Für das Feld „Host“ verwenden Sie frontend-external. Kopieren Sie die URL von der Seite „Gateways, Dienste und eingehender Traffic“. Achten Sie darauf, den Port auszuschließen. Beispiel:

Die Seite „Neue Locust-Swarm starten“ mit der Schaltfläche „Start swarming“ (Swarming starten)

  1. Klicken Sie auf die Schaltfläche Start swarming (Swarming starten). Sie sollten etwa 300 Nutzer haben, um die vordefinierten URLs in wenigen Sekunden zu erreichen.

Die Seite „Statistiken“ mit der Liste von 300 Nutzern

  1. Klicken Sie auf den Tab Failures (Fehler), um zu sehen, dass Fehler auftreten. Sie sehen, dass es eine große Anzahl von „500“-Fehlern gibt.

Seite mit dem Tab „Failures“ (Fehler)

Wenn Sie auf der Startseite auf ein Produkt klicken, ist die Seite entweder spürbar langsam oder Sie erhalten Fehlermeldungen wie die folgende:

Die Online-Boutique zeigt den HTTP-Statusfehler „500 Internal Server Error“ an.

Benachrichtigungs- und Anwendungsfehler bestätigen

  1. Klicken Sie in der Console im Navigationsmenü auf Monitoring und dann auf Benachrichtigungen. Sie sollten bald einen Vorfall zu logging/user/Error_Rate_SLI sehen. Wenn Sie nicht sofort einen Vorfall sehen, warten Sie ein oder zwei Minuten und aktualisieren Sie die Seite. Es kann bis zu 5 Minuten dauern, bis die Benachrichtigung ausgelöst wird.

  2. Klicken Sie auf den Link zum Vorfall:

Die Seite „Benachrichtigungen“ mit dem Vorfall-Link im Abschnitt „Vorfälle“

Dadurch gelangen Sie auf die Details-Seite.

  1. Klicken Sie im Abschnitt „Logs“ auf Im Log-Explorer ansehen und wählen Sie die Projekt-ID aus dem Drop-down-Menü aus, um Pod-Logs aufzurufen.

Die Seite „Vorfalls-Messwerte“ mit der hervorgehobenen Schaltfläche „Logs ansehen“

  1. Sie können auch im Explorer-Bereich „Logs“ auf das Label Fehler klicken, um nur Fehler abzufragen.

Alternativ können Sie in das Feld „Abfragevorschau“ klicken, um den Query Builder aufzurufen, dann auf das Drop-down-Menü Schweregrad klicken und Fehler zur Abfrage hinzufügen. Klicken Sie auf Hinzufügen und dann auf Abfrage ausführen. Im Drop-down-Menü können Sie mehrere Schweregrade hinzufügen.

In beiden Fällen wird der Abfrage severity=ERROR hinzugefügt. Danach sollten alle Fehler für den Pod „recommendationserivce“ angezeigt werden.

Die Seite „Log-Explorer“ ist auf dem Tab „Query Builder“ geöffnet und zeigt im Bereich „Abfrageergebnisse“ eine Liste von Fehlern an.

  1. Sie können die Fehlerdetails aufrufen, indem Sie ein Fehlerereignis maximieren. Beispiel:

Das erweiterte Abfrageergebnis „Verbindungsaufbau fehlgeschlagen“

  1. Maximieren Sie textPayload.

  2. Klicken Sie auf die Fehlermeldung und wählen Sie Feld in Zusammenfassungszeile einfügen aus, damit die Fehlermeldungen als Zusammenfassungsfeld angezeigt werden:

Die Option „Feld in Zusammenfassungszeile einfügen“ ist im maximierten Menü der Fehlermeldung hervorgehoben.

Dort können Sie bestätigen, dass es tatsächlich viele Fehler für den Dienst RecommendationService gibt. Anhand der Fehlermeldungen lässt sich erkennen, dass der RecommendationService keine Verbindung zu einigen nachgelagerten Diensten herstellen konnte, um Produkte oder Empfehlungen abzurufen. Es ist jedoch noch nicht klar, was die Ursache für die Fehler ist.

Wenn Sie sich das Architekturdiagramm noch einmal ansehen, sehen Sie, dass der RecommendationService eine Liste von Empfehlungen an die Frontend-Dienste sendet. Sowohl der Frontend-Dienst als auch der RecommendationService rufen jedoch den ProductCatalogService für eine Liste von Produkten auf.

Architekturdiagramm mit den hervorgehobenen Kategorien „ProductCatalogService“ und „RecommendationService“.

Im nächsten Schritt sehen Sie sich die Messwerte des Hauptverdächtigen, des ProductCatalogService, auf Anomalien an. Unabhängig davon können Sie die Logs genauer untersuchen, um weitere Informationen zu erhalten.

Fehlerbehebung mit dem Kubernetes-Dashboard und den Kubernetes-Logs

  1. Einer der ersten Orte, an denen Sie sich die Messwerte ansehen können, ist der Abschnitt Kubernetes Engine der Monitoring Console (Navigationsmenü > Monitoring> Dashboards > GKE).

  2. Sehen Sie sich den Abschnitt Arbeitslasten an.

  3. Rufen Sie Kubernetes Engine > Arbeitslasten > productcatalogservice auf. Sie sehen, dass der Pod für den Dienst ständig abstürzt und neu gestartet wird.

Der Abschnitt „Aktive Überarbeitungen“ auf der Seite „Bereitstellungsdetails“ ist hervorgehoben.

Prüfen Sie als Nächstes, ob die Logs etwas Interessantes enthalten.

Es gibt zwei einfache Möglichkeiten, auf Ihre Containerlogs zuzugreifen:

  1. Klicken Sie auf den Tab Logs, um eine Schnellansicht der neuesten Logs aufzurufen. Klicken Sie dann oben rechts im Logbereich auf die Schaltfläche mit dem externen Link, um zum Log-Explorer zurückzukehren.

Seite „Logs“ mit Tabs

  1. Klicken Sie auf der Seite „Übersicht“ auf den Link Containerlogs auf der Seite „Bereitstellungsdetails“.

Der Link „Containerlogs“ auf der Seite „Bereitstellungsdetails“ ist hervorgehoben.

Sie befinden sich wieder auf der Seite „Log-Explorer“, jetzt mit einer vordefinierten Abfrage, die speziell nach den Logs des Containers gefiltert ist, den Sie in GKE aufgerufen haben.

In der Loganzeige lässt sich anhand der Logeinträge und des Histogramms sehen, dass der Container innerhalb kurzer Zeit wiederholt Produktkataloge parst. Das scheint sehr ineffizient zu sein.

Am Ende der Abfrageergebnisse wird möglicherweise auch ein Laufzeitfehler wie der folgende angezeigt:

panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation

Das könnte tatsächlich dazu führen, dass der Pod abstürzt.

Suchen Sie den Logeintrag im Code, um den Grund besser zu verstehen.

  1. Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus:
grep -nri 'successfully parsed product catalog json' src

Die Ausgabe sollte so aussehen, wobei der Name der Quelldatei mit einer Zeilennummer angegeben ist.

Ausgabe:

src/productcatalogservice/server.go:237: log.Info("successfully parsed product catalog json")
  1. Klicken Sie in der Cloud Shell-Menüleiste auf Editor öffnen und dann auf In neuem Fenster öffnen, um die Quelldatei aufzurufen. (Wenn die Fehlermeldung „Der Code-Editor kann nicht geladen werden, weil Drittanbieter-Cookies deaktiviert sind“ angezeigt wird, klicken Sie oben auf der Chrome-Seite auf das Augensymbol.)

Die Schaltfläche „Editor öffnen“ ist in der Benutzeroberfläche hervorgehoben.

  1. Klicken Sie auf die Datei microservices-demo/src/productcatalogservice/server.go, scrollen Sie zu Zeile 237 und Sie sehen, dass die Methode readCatalogFile diese Meldung protokolliert:

Die Meldung: log.Info("successfully parsed product catalog json") gibt nil zurück

Mit etwas mehr Aufwand können Sie erkennen, dass der Dienst den Produktkatalog bei jedem Aufruf neu lädt und parst, wenn die boolesche Variable reloadCatalog auf „true“ gesetzt ist. Das scheint unnötig.

Wenn Sie im Code nach der Variablen reloadCatalog suchen, sehen Sie, dass sie durch die Umgebungsvariable ENABLE_RELOAD gesteuert wird und einen Logeintrag für ihren Zustand schreibt.

Logeintrag für den Status „reloadCatalog“

  1. Wenn die Datei server.go geöffnet und Gemini Code Assist in der IDE aktiviert ist, sehen Sie oben rechts im Editor das Symbol Gemini Code Assist: Intelligente Aktionen.

In diesem Fall bitten Sie Gemini Code Assist, Ihnen bei der Erklärung der Serverimplementierung für Ihr neues Teammitglied zu helfen.

  1. Klicken Sie auf das Gemini Code Assist: Intelligente Aktionen-Symbol Gemini Code Assist: Intelligente Aktionen und wählen Sie Erkläre mir das aus.

  2. Gemini Code Assist öffnet ein Chatfenster mit dem vorausgefüllten Prompt Erkläre mir das. Ersetzen Sie im Inline-Textfeld des Code Assist-Chats den vorausgefüllten Prompt durch Folgendes und klicken Sie auf Senden:

Du bist Kubernetes-Architekt bei Cymbal AI. Ein neues Mitglied im Team ist mit dieser Serverimplementierung nicht vertraut. Erkläre die Datei „server.go“ im Detail und gehe dabei auf die wichtigsten Komponenten ein, die im Code verwendet werden. Nimm für die vorgeschlagenen Verbesserungen keine Änderungen an dieser Datei vor.

Die Erklärung für den Code in der Datei server.go wird im Gemini Code Assist-Chat angezeigt.

Fügen Sie diese Nachricht Ihrer Abfrage hinzu und prüfen Sie die Logs noch einmal, um festzustellen, ob Einträge vorhanden sind.

  1. Kehren Sie zum Tab mit dem Log-Explorer zurück und fügen Sie der Abfrage die folgende Zeile hinzu:
jsonPayload.message:"catalog reloading"

Die vollständige Abfrage im Query Builder lautet also:

resource.type="k8s_container" resource.labels.location="{{{project_0.startup_script.zone | ZONE}}}" resource.labels.cluster_name="central" resource.labels.namespace_name="default" labels.k8s-pod/app="productcatalogservice" jsonPayload.message:"catalog reloading"
  1. Klicken Sie noch einmal auf Abfrage ausführen und suchen Sie im Containerlog nach der Meldung „Katalog neu laden aktivieren“. Damit ist bestätigt, dass das Feature zum Neuladen des Katalogs aktiviert ist.

Die Meldung „Katalog neu laden aktivieren“ im Containerlog

An diesem Punkt können Sie sicher sein, dass der Frontend-Fehler durch den Aufwand verursacht wird, der entsteht, wenn der Katalog für jede Anfrage geladen wird. Als Sie die Last erhöht haben, hat der Aufwand dazu geführt, dass der Dienst ausgefallen ist und der Fehler generiert wurde.

Aufgabe 6: Problem beheben und Ergebnis überprüfen

Auf der Grundlage des Codes und der Informationen in den Logs können Sie versuchen, das Problem zu beheben, indem Sie das Neuladen des Katalogs deaktivieren.

In dieser Aufgabe entfernen Sie die Umgebungsvariable ENABLE_RELOAD für den Produktkatalogdienst. Nachdem Sie die Variablen geändert haben, können Sie die Anwendung neu bereitstellen und prüfen, ob durch die Änderungen das beobachtete Problem behoben wurde.

  1. Klicken Sie auf den Button Terminal öffnen, um zum Cloud Shell-Terminal zurückzukehren, falls es geschlossen wurde.

  2. Führen Sie dazu diesen Befehl aus:

grep -A1 -ni ENABLE_RELOAD release/kubernetes-manifests.yaml

Die Ausgabe zeigt die Zeilennummer der Umgebungsvariable in der Manifestdatei.

Ausgabe:

373: - name: ENABLE_RELOAD 374- value: "1"
  1. Löschen Sie diese beiden Zeilen, um das Neuladen zu deaktivieren:
sed -i -e '373,374d' release/kubernetes-manifests.yaml
  1. Führen Sie dann den folgenden Befehl aus, um die Manifestdatei noch einmal anzuwenden:
kubectl apply -f release/kubernetes-manifests.yaml

Sie werden feststellen, dass nur productcatalogservice konfiguriert wurde. Die anderen Dienste bleiben unverändert.

  1. Kehren Sie zur Seite mit den Bereitstellungsdetails zurück (Navigationsmenü > Kubernetes Engine > Workloads > productcatalogservice) und warten Sie, bis der Pod erfolgreich ausgeführt wird. Warten Sie 2–3 Minuten oder bis Sie sicher sind, dass die App nicht mehr abstürzt.

Seite „Bereitstellungsdetails“ mit hervorgehobenem Abschnitt „Aktive Überarbeitungen“

  1. Wenn Sie noch einmal auf den Link Containerlogs klicken, sehen Sie, dass die wiederholten Nachrichten successfully parsing the catalog json nicht mehr angezeigt werden:

Query Builder-Seite

  1. Wenn Sie zur URL der Webanwendung zurückkehren und auf der Startseite auf die Produkte klicken, ist die Anwendung auch viel responsiver und es sollten keine HTTP-Fehler auftreten.

  2. Gehen Sie zurück zum Lastgenerator und klicken Sie oben rechts auf die Schaltfläche Reset Stats (Statistiken zurücksetzen). Der Prozentsatz der Fehler wird zurückgesetzt und sollte nicht mehr ansteigen.

Prozentsatz der Fehler wird mit 0 % angezeigt

Alle oben genannten Prüfungen zeigen, dass das Problem behoben wurde. Wenn der Fehler „500“ weiterhin angezeigt wird, warten Sie noch ein paar Minuten und klicken Sie dann noch einmal auf ein Produkt.

Glückwunsch!

Sie haben Cloud Logging und Cloud Monitoring verwendet, um einen Fehler in einer absichtlich falsch konfigurierten Version der Mikrodienste-Demo-App zu finden. Dies ist ein ähnlicher Prozess zur Fehlerbehebung, mit dem Sie Probleme für Ihre GKE-Anwendungen in einer Produktionsumgebung eingrenzen können.

Zuerst haben Sie die Anwendung in GKE bereitgestellt und dann einen Messwert und eine Benachrichtigung für Frontend-Fehler eingerichtet. Als Nächstes haben Sie eine Last generiert und dann festgestellt, dass die Benachrichtigung ausgelöst wurde. Anhand der Benachrichtigung konnten Sie das Problem auf bestimmte Dienste eingrenzen, die Cloud Logging verwenden. Anschließend haben Sie sich mit Cloud Monitoring und der GKE-Benutzeroberfläche die Messwerte für die GKE-Dienste angesehen. Um das Problem zu beheben, haben Sie eine aktualisierte Konfiguration in GKE bereitgestellt und bestätigt, dass die Fehler in den Logs behoben wurden.

Weitere Informationen

  • Dieses Lab basiert auf diesem Blogpost zur Verwendung von Logging für Ihre in GKE ausgeführten Anwendungen.
  • Der Folgebeitrag darüber, wie DevOps-Teams Probleme mit Cloud Monitoring und Cloud Logging schnell ermitteln können, ist ebenfalls lesenswert.

Google Cloud-Schulungen und -Zertifizierungen

In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.

Anleitung zuletzt am 26. August 2025 aktualisiert

Lab zuletzt am 14. Oktober 2025 getestet

© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.