1. Einführung
In diesem Lab verwenden Sie Gemini, eine KI-basierte Unterstützung in Google Cloud, um ein Problem bei der Bereitstellung von Cloud Functions-Funktionen zu beheben. Dazu analysieren Sie Fehlerlogs, ermitteln die Ursache des Problems und finden eine Lösung.
Aufgaben
- Sie verwenden das Cloud Shell-Terminal und die gcloud CLI, um die Umgebung einzurichten, einschließlich der Aktivierung relevanter Google APIs und der Erstellung einer Cloud Functions-Funktion aus dem bereitgestellten Code.
- Sie verwenden die Logzusammenfassung von Cloud Logging, um Logzusammenfassungen zu generieren und so die erfassten Informationen besser zu verstehen.
- Sie chatten mit Gemini, um Unterstützung bei der Fehlerbehebung und Lösung des Problems zu erhalten.
Lernziele
- Verwendung von Gemini mit Google Cloud Observability und zur Fehlerbehebung.
- So finden und verstehen Sie Cloud Functions-Logs mit Gemini.
Voraussetzungen
- Chrome-Browser
- Ein Google Cloud-Projekt mit aktivierter Abrechnung
- Ein Google-Konto mit Zugriffsberechtigungen für das Projekt, mit dem Sie APIs aktivieren und Ressourcen bearbeiten können
Dieses Lab richtet sich an DevOps- und Plattform-Engineers sowie Softwareentwickler aller Erfahrungsstufen, einschließlich Anfänger. Wir konzentrieren uns darauf, praktische Erfahrungen mit den Möglichkeiten von Gemini bei der Fehlerbehebung zu sammeln.
2. Einrichtung
In diesem Abschnitt erfahren Sie alles, was Sie für den Einstieg in dieses Lab benötigen.
Umgebung konfigurieren
1. Melden Sie sich in der Cloud Console an, indem Sie https://console.cloud.google.com öffnen.
2. Wählen Sie ein Google Cloud-Projekt aus, mit dem Sie in diesem Lab arbeiten möchten.

3. Öffnen Sie die Seite „Cloud Functions“ in der Console. Wählen Sie dazu im Navigationsmenü „Cloud Functions“ aus (Symbol oben links im Console-Fenster).

Alternativ können Sie im Suchbereich der Console nach „Cloud Functions“ suchen:

Klicken Sie oben in der Liste der Funktionen auf die Schaltfläche „Funktion erstellen“
.
Wenn Sie Cloud Functions in diesem Projekt noch nicht verwendet haben, werden Sie aufgefordert, Google APIs zu aktivieren.

Klicken Sie auf „AKTIVIEREN“, um fortzufahren.
4. Definieren Sie die grundlegenden Eigenschaften der neuen Cloud Functions-Funktion.
- Legen Sie den Namen auf „
codelab-cf“ fest. - Wählen Sie die Option Nicht authentifizierte Aufrufe zulassen aus.

Klicken Sie unten links im Fenster auf „WEITER“, um den Schritt abzuschließen:

Nachdem Sie auf „WEITER“ geklickt haben, werden Sie möglicherweise aufgefordert, zusätzliche Google APIs zu aktivieren. Klicken Sie wie in Schritt 4 auf „AKTIVIEREN“.

Laufzeit und Code der Cloud Functions-Funktion einrichten
In diesem Codelab wird Python als Programmiersprache verwendet. Wenn Sie mit Python nicht vertraut sind, ist das kein Problem. Für dieses Codelab sind keine Python-Kenntnisse erforderlich.
5. Wählen Sie „Python 3.11“ als Laufzeit der Funktion aus.

Beachten Sie, dass sich durch die Änderung der Laufzeit der im Inline-Editor angezeigte Quellcode ändert.
6. Kopieren Sie den folgenden Code in den Inline-Editor, um das automatisch generierte Schnellstartbeispiel zu ändern.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
Dieser Code liest das Attribut path aus der GET-Anfrage, parst den Pfad, um den Bucket-Namen zu ermitteln, und ruft die Google Cloud Storage API auf, um eine Liste der Objekte abzurufen, die unter diesem Pfad gespeichert sind. Die Funktion (get_object_list) akzeptiert eine Anfrage, die ein Flask-Objekt ist, als Eingabeargument und gibt die Namen der Objekte als JSON-Array zurück.
7. Wählen Sie die Datei requirements.txt aus der Liste der Dateien aus, die im Inline-Editor verblieben sind. Ersetzen Sie die aktuelle Liste der Abhängigkeiten durch die neue, indem Sie den folgenden Code in den Inline-Editor kopieren.
google-cloud-storage
8. Klicken Sie unten links auf „BEREITSTELLEN“, um die Cloud Functions-Funktion bereitzustellen.

Es kann einige Minuten dauern, bis die Bereitstellung abgeschlossen ist. Wenn Sie die Einrichtungsanleitung genau befolgt haben, sollte die Bereitstellung als fehlgeschlagen gemeldet werden.
3. Problem finden und beheben
In diesem Abschnitt verwenden Sie die Funktion „Logerklärungen“ und andere Gemini-Unterstützung, um das Problem und die Lösung zu ermitteln.
1. Die Bereitstellung schlägt fehl. Sie sollten eine Fehlermeldung mit zusätzlichen Informationen und einer Option zum Aufrufen der Bereitstellungslogs sehen. Klicken Sie auf „LOGS ANSEHEN“, um die Logs der Bereitstellung aufzurufen.

Die Bereitstellungslogs werden in einem separaten Tab im selben Browser geöffnet. Sie müssen zwischen den Tabs wechseln, um dieses Codelab abzuschließen.
Möglicherweise werden beim Klicken auf „LOGS ANSEHEN“ keine oder nur wenige Logzeilen angezeigt. Verwenden Sie in diesem Fall die Zeitraumauswahl im Abfragebereich des Log-Explorers und wählen Sie Letzte 30 Minuten aus.

2. Prüfen Sie die Logs im geöffneten Tab. Beachten Sie, dass Logzusammenfassungen wie mehrere Zeilen des Callstacks der Ausnahme aussehen. Das liegt daran, dass Cloud Functions Text erfasst, der in stdout oder stderr ausgegeben wird, und jede Zeile als separaten Logeintrag schreibt. Andere Logzeilen fassen Informationen zum Fehlercode beim Beenden sowie zusätzliche Informationen zusammen, die von den Cloud Functions- und Cloud Run APIs gemeldet werden.

Sie können auf eine beliebige Zeile klicken, um weitere Informationen zu einem bestimmten Log zu sehen. Die erweiterten Logs enthalten zusätzliche UI-Elemente, mit denen Sie alle Informationen zum Log kopieren, alle Felder maximieren, um alle Daten des Logeintrags anzuzeigen, und den Logeintrag mit Gemini erklären können.
4. Der Callstack der Ausnahme ist nicht sehr informativ. Suchen Sie in den Logs nach dem Ende des Stacktrace-Logs der Ausnahme. Das ist die Zeile „Container called exit(1)“. Die folgende Logzusammenfassung lautet:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
Das sieht nach einem guten Kandidaten für die Untersuchung aus. Klicken Sie auf diese Zeile, um den Logeintrag zu maximieren. Klicken Sie dann auf die Schaltfläche „Diesen Logeintrag erklären“, um weitere Informationen zum ausgewählten Log zu sehen.

Wenn Gemini in diesem Projekt noch nicht verwendet wurde, werden Sie aufgefordert, eine erforderliche API zu aktivieren. Wenn Sie aufgefordert werden, die API zu aktivieren, klicken Sie auf „AKTIVIEREN“, um fortzufahren.

Gelegentlich kann es vorkommen, dass Sie beim Prompten von Gemini einen Fehler erhalten. Wiederholen Sie in diesem Fall den Promptvorgang noch einmal, um die Antwort zu erhalten. Klicken Sie beispielsweise noch einmal auf die Schaltfläche „Diesen Logeintrag erklären“.
5. Prüfen Sie die von Gemini bereitgestellte Erklärung. Wenn die Erklärung nicht ausreichend oder unklar ist, fordern Sie Gemini auf, weitere Informationen bereitzustellen. Verwenden Sie dazu einen der folgenden Prompts oder formulieren Sie Ihre eigene Frage.
Can you provide more information about this log?
Can you provide more information about the error?
6. Fordern Sie dann Gemini auf, Vorschläge zur Behebung des Problems zu machen. Fragen Sie Gemini beispielsweise:
How to solve this problem?
Suggest a solution to resolve this error
Suggest how I can fix this error
Die Antwort von Gemini kann je nach aktuellem Kontext sowie Formulierung und Format Ihres Prompts variieren. Es wird erwartet, dass Gemini empfiehlt, dafür zu sorgen, dass der Quellcode der Cloud Functions-Funktion eine Funktion mit dem Namen hello_http enthält.
7. Sie sehen gerade den Tab mit den Cloud Functions-Logs. Wählen Sie den vorherigen Tab aus, auf dem die Seite zur Bereitstellung von Cloud Functions mit dem Fehler angezeigt wird, und klicken Sie auf „BEARBEITEN“.

8. Prüfen Sie, ob die Authentifizierung weiterhin auf Nicht authentifizierte Aufrufe zulassen festgelegt ist, und aktualisieren Sie die Auswahl gegebenenfalls.

9. Klicken Sie unten auf „WEITER“, um den Inline-Editor zu sehen. Folgen Sie der Empfehlung von Gemini und ändern Sie den Funktionsnamen von get_order_list in hello_http.
Klicken Sie nach Abschluss der Bearbeitung auf „BEREITSTELLEN“.
Es kann einige Minuten dauern, bis die Bereitstellung abgeschlossen ist. Prüfen Sie, ob die Bereitstellung erfolgreich abgeschlossen wurde und keine Fehlermeldungen angezeigt werden.
In der Console wird möglicherweise weiterhin die letzte Fehlermeldung angezeigt, bis die Bereitstellung abgeschlossen ist.
10. Prüfen Sie, ob die Cloud Functions-Funktion funktioniert, indem Sie die folgende HTTPS-Anfrage mit curl senden. Sie können Cloud Shell verwenden oder den Befehl von einem beliebigen Terminal ausführen, auf dem die curl und gcloud CLI installiert sind.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
Wenn Sie diesen Befehl über ein Terminal ausführen möchten, müssen Sie sich mit der gcloud CLI authentifizieren und den Wert Ihrer Projekt-ID auf die Umgebungsvariable GOOGLE_CLOUD_PROJECT festlegen.
Bonus
Der Name der Funktion hello_http wurde als Standardeinstiegspunkt für HTTP-getriggerte Cloud Functions-Funktionen definiert, als die Python-Laufzeit ausgewählt wurde. Alternativ können Sie get_order_list als Namen der Funktion im Quellcode beibehalten und das Feld „Einstiegspunkt“ der Cloud Functions-Funktion aktualisieren, das sich über dem Inline-Editor rechts neben dem Feld „Laufzeit“ befindet:

Wenn Sie den Einstiegspunkt von hello_http in get_order_list ändern, wird das Problem mit der Bereitstellung behoben.
4. Bereinigen
Zum Bereinigen können Sie entweder das Projekt beenden oder die Cloud Functions-Instanz löschen. Sie können Cloud Functions-Funktionen über die Console oder mit dem folgenden CLI-Befehl löschen:
gcloud functions delete codelab-cf --region=us-central1
5. Glückwunsch!
Glückwunsch! Sie haben Gemini erfolgreich verwendet, um das Problem mit Ihrer Anwendung zu beheben. Außerdem wissen Sie jetzt, wie Gemini Sie beim Verstehen von Logs und beim Beantworten von Fragen zu Google Cloud unterstützen kann.