1. Einführung
In diesem Codelab erfahren Sie, wie Sie mit der Funktion Hilfe beim Verfassen synthetische Monitoring-Tests für Ihre vorhandenen Dienste erstellen.
Aufgaben
- Sie stellen eine API in Google Cloud Run bereit, die als Grundlage für unseren Dienst dient, den wir testen werden.
- Anschließend schreiben Sie einen synthetischen Monitor, ein Feature von Cloud Monitoring.
- Mit der Funktion „Formuliere für mich“ schreiben Sie den synthetischen Monitor.
Lerninhalte
- Was ist synthetisches Monitoring?
- Hier erfahren Sie, wie Sie die Gemini-Funktion „Hilfe beim Verfassen“ in synthetischem Monitoring verwenden, um Testfälle zu erstellen, die die Funktionen der Hauptdienste validieren.
Du brauchst...
- Chrome-Webbrowser
- Ein Gmail-Konto
- Ein Cloud-Projekt mit aktivierter Abrechnung
- Gemini Code Assist ist für Ihr Cloud-Projekt aktiviert
Dieses Lab richtet sich an Entwickler aller Stufen, auch Anfänger. Die Beispielanwendung ist zwar in Python geschrieben, aber Sie müssen nicht mit der Python-Programmierung vertraut sein, um zu verstehen, wo das Problem liegt.
2. Einrichtung
Wir aktivieren Gemini for Cloud jetzt in unserem Google Cloud-Projekt. Gehen Sie dazu so vor:
- Rufen Sie https://console.cloud.google.com auf und vergewissern Sie sich, dass Sie das Google Cloud-Projekt ausgewählt haben, mit dem Sie für dieses Lab arbeiten möchten. Klicken Sie oben rechts auf das Symbol „Gemini öffnen“.
- Das Chatfenster von Gemini for Cloud wird rechts in der Console geöffnet. Klicken Sie wie unten gezeigt auf die Schaltfläche „Aktivieren“. Wenn Sie die Schaltfläche Aktivieren nicht sehen, sondern stattdessen eine Chat-Oberfläche sehen, haben Sie Gemini für Cloud wahrscheinlich bereits für das Projekt aktiviert und können direkt mit dem nächsten Schritt fortfahren.
- Nach der Aktivierung können Sie Gemini für Cloud testen, indem Sie ein oder zwei Abfragen stellen. Es werden einige Beispielabfragen angezeigt, aber Sie können es mit der folgenden Abfrage versuchen:
What is Synthetic Monitoring?
Gemini for Cloud wird Ihre Frage beantworten. Sehen Sie sich die Referenzdokumentation zum Schreiben von synthetischen Monitoren in Google Cloud an.
Klicken Sie rechts oben auf das -Symbol, um das Chatfenster von Gemini für Cloud zu schließen.
3. Inventar-Beispiel-API in Google Cloud Run bereitstellen
Bevor wir mit den Tests schreiben, benötigen wir eine Beispiel-API, die wir testen können. Dazu schreiben wir eine einfache Inventar-API, die wir in Google Cloud Run bereitstellen.
Wir verwenden die Cloud Shell IDE, eine vollständig verwaltete Code OSS-basierte Entwicklungsumgebung. Die Umgebung verfügt über eine Cloud Code-IDE-Erweiterung, die das Arbeiten mit Google Cloud-Diensten effizienter macht. Gehen Sie dazu so vor:
- Rufen Sie ide.cloud.google.com auf. Es kann eine Weile dauern, bis die IDE angezeigt wird. Bitte haben Sie etwas Geduld.
- Klicken Sie wie dargestellt in der unteren Statusleiste auf die Schaltfläche Cloud Code – Sign in (Cloud Code – Anmelden). Autorisieren Sie das Plug-in wie angegeben. Wenn in der Statusleiste Cloud Code - no project angezeigt wird, wählen Sie diese Option aus und wählen Sie dann das gewünschte Google Cloud-Projekt aus der Liste der Projekte aus, mit denen Sie arbeiten möchten.
- Klicken Sie rechts unten auf die Schaltfläche Gemini und wählen Sie ein letztes Mal das richtige Google Cloud-Projekt aus. Wenn Sie aufgefordert werden, die Cloud AI Companion API zu aktivieren, tun Sie dies, bevor Sie fortfahren.
- Nachdem Sie Ihr Google Cloud-Projekt ausgewählt haben, prüfen Sie, ob dies in der Cloud Code-Statusmeldung in der Statusleiste zu sehen ist und ob Code Assist auf der rechten Seite aktiviert ist (siehe unten):
- Klicken Sie in der Statusleiste unten auf den Google Cloud-Projektnamen.
- Eine Liste mit Optionen wird angezeigt. Klicken Sie in der Liste unten auf New Application (Neue Anwendung).
- Wählen Sie Cloud Run aus.
- Wählen Sie die Anwendungsvorlage Python (Flask): Cloud Run aus.
- Speichern Sie die neue Anwendung an Ihrem bevorzugten Speicherort.
- In einer Benachrichtigung wird bestätigt, dass Ihre Anwendung erstellt wurde. Daraufhin wird ein neues Fenster geöffnet, in dem Ihre Anwendung wie unten dargestellt geladen ist. Eine
README.md
-Datei wird geöffnet. Sie können diese Ansicht vorerst schließen.
- Rufen Sie im Explorer die Datei
app.py
auf und ersetzen Sie sie durch den folgenden Inhalt:
from flask import Flask, jsonify, request
app = Flask(__name__)
inventory = [
{
'id': 1,
'name': 'Item 1',
'quantity': 10
},
{
'id': 2,
'name': 'Item 2',
'quantity': 20
},
{
'id': 3,
'name': 'Item 3',
'quantity': 30
}
]
@app.route('/inventory', methods=['GET'])
def get_inventory():
return jsonify(inventory)
@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
for item in inventory:
if item['id'] == id:
return jsonify(item)
return jsonify({'error': 'Item not found'}), 404
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)
- Jetzt können Sie die Inventory API in Cloud Run bereitstellen. Sie müssen über das Menüsymbol oben links in der Cloud Shell-IDE eine neue Terminalsitzung starten. Klicken Sie auf das Menüsymbol und dann auf Terminal → Neues Terminal, wie unten gezeigt:
- Geben Sie in der Terminalsitzung den folgenden Befehl ein:
gcloud run deploy --source .
- Mit dem Befehl oben wird nach einem
region
gefragt, das bereitgestellt werden soll. Wählen Sieus-central1
aus. Sie werden gebeten,unauthenticated invocations
zuzulassen. Sagen Sie dazuy
. - Sobald der Dienst erfolgreich bereitgestellt wurde, wird eine Service-URL bereitgestellt. Notieren Sie sich das.
4. Inventory API testen
Sie können jetzt die Inventory API testen, indem Sie den Browser starten und die folgenden Endpunkte erreichen:
SERVICE_URL/inventory
Sie sollten entsprechend den Musterdaten im Dienst drei Inventarartikel zurückgeben. Hier die Beispielantwort:
[ { "id": 1, "name": "Item 1", "quantity": 10 }, { "id": 2, "name": "Item 2", "quantity": 20 }, { "id": 3, "name": "Item 3", "quantity": 30 } ]
Über die URL unten kann jetzt ein bestimmtes Inventarelement abgerufen werden. Dadurch sollte das Inventarelement zurückgegeben werden, dessen id
-Wert „1“ ist.
SERVICE_URL/inventory/1
Die Antwort sollte in etwa so aussehen:
{ "id": 1, "name": "Item 1", "quantity": 10 }
Schließlich können wir versuchen, ein nicht vorhandenes Inventarelement abzurufen.
SERVICE_URL/inventory/200
Sie sollten eine Fehlermeldung erhalten, da kein Inventarelement mit dem id
-Wert 200 vorhanden ist. Die Antwort sollte in etwa so aussehen:
{ "error": "Item not found" }
Jetzt können wir unsere synthetischen Monitoring-Tests in Cloud Monitoring mithilfe von Gemini schreiben.
5. Synthetisches Monitoring in Google Cloud
Wie in der Dokumentation steht, können Sie mit synthetischen Überwachungsfunktionen definieren, was getestet werden soll, sowie eine Abfolge von Tests. Sie können beispielsweise die Anmeldeseite Ihrer Anwendung, den Bezahlvorgang Ihres E-Commerce-Shops oder die API-Aufrufe Ihrer Anwendung an Dienste von Drittanbietern testen.
Wenn Sie einen synthetischen Monitor erstellen, stellen Sie eine Cloud Functions-Funktion der 2. Generation bereit, die auf Cloud Run basiert. Die Funktion muss in Node.js geschrieben sein und auf dem Open-Source-Synthetics SDK-Framework basieren. Cloud Monitoring verteilt und verwaltet dieses Framework.
Cloud Monitoring unterstützt die folgenden Typen synthetischer Monitore:
- Mit benutzerdefinierten oder Mocha-basierten synthetischen Monitoren können Sie eine vollständig konfigurierbare Cloud Functions-Funktion für einen einzelnen Zweck bereitstellen.
- Mit Checks für fehlerhafte Links können Sie Optionen wie den Ursprungs-URI, die Anzahl der getesteten Links und die Anzahl der Wiederholungsversuche angeben, bevor Sie eine vorkonfigurierte Cloud Functions-Funktion bereitstellen.
Cloud Monitoring nimmt bei der Ausführung dieser synthetischen Monitore sehr viel Arbeit ab. Er ist verantwortlich für:
- Regelmäßige Ausführung Ihrer Cloud Functions-Funktion.
- Ergebnisse jeder Ausführung erfassen und speichern:
- Informationen zu Erfolg und Fehler wie Fehlermeldung, Fehlertyp und Codezeile
- Ausführungszeit
- Logs
- Messwerte
Wir nutzen Gemini und insbesondere die Funktion Help Me Write
, die uns den ersten Code für die Tests liefert, damit wir diesen Code zum Testen und Entwickeln zusätzlicher Funktionen verwenden können. Legen wir los.
6. Synthetic Monitor für die Testläufe der Inventory API schreiben
Jetzt rufen wir die Cloud Console auf, um unseren synthetischen Monitor zu schreiben.
Rufen Sie in der Cloud Console die Seite Synthetisches Monitoring auf. Daraufhin wird die folgende Seite angezeigt:
Klicken Sie oben auf der Seite auf den Link SYNTHETIC MONITOR ERSTELLEN. Daraufhin wird ein Konfigurationsformular wie unten dargestellt angezeigt:
Wir haben als Namen s1
angegeben. Sie können aber auch einen anderen Namen auswählen. Sie sehen auf dem Bildschirm oben die Schaltfläche HILFE beim CODE. Klicken Sie darauf.
Daraufhin wird ein Pop-up-Fenster geöffnet, in dem Sie eine Beschreibung der Testfälle eingeben müssen, die Sie ausführen möchten, um sicherzustellen, dass die Inventory API einwandfrei funktioniert.
Verwenden Sie im Feld zum Bearbeiten der Aufforderung einen Prompt wie den folgenden:
Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200.
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found".
Beachten Sie, dass wir drei Testfälle bereitgestellt haben. Sie sollten den Wert SERVICE_URL durch den tatsächlichen Namen des Cloud Run-Dienstes für Ihren Dienst ersetzen.
Sobald Sie auf GENERIEREN klicken, generiert Gemini den Test-Suite-Code und die Datei package.json
, wie unten gezeigt. Der für Sie generierte Code kann sich von dem unten gezeigten unterscheiden. Sehen Sie sich den Code und die Abhängigkeitsdateien in der Datei package.json
an.
Klicken Sie auf IN CLOUD FUNCTION EINFÜGEN. Daraufhin wird ein Formular zum Erstellen einer Cloud Functions-Funktion mit den erforderlichen Werten geöffnet.
Klicken Sie auf FUNKTION ANWENDEN und dann auf die Schaltfläche ERSTELLEN. Wir haben in diesem Beispiel keine Konfiguration für Benachrichtigungskanäle gewählt, Sie können diese aber auswählen.
Dadurch wird die Google Cloud Functions-Funktion im Hintergrund erstellt. Dies kann einige Minuten dauern. Bitte haben Sie etwas Geduld.
Nachdem die Cloud Functions-Funktion erfolgreich bereitgestellt wurde, ruft Cloud Monitoring den synthetischen Monitor für Sie auf.
Am Anfang werden Sie sehen, dass es keine Aufrufe gibt, wie unten gezeigt:
Sobald bestimmte Ausführungen vorhanden sind, werden die verschiedenen Ausführungen angezeigt. Der folgende Bildschirm zeigt, dass die Tests bestanden werden:
Wenn Sie auf den Namen des synthetischen Monitors klicken (z.B. s1), werden die verschiedenen Ausführungen wie unten dargestellt angezeigt:
7. Glückwunsch!
Glückwunsch – Sie haben erfolgreich eine Beispiel-API in Google Cloud Run bereitgestellt und synthetische Monitoring-Tests geschrieben, um die Funktionalität des Dienstes zu validieren. Dabei haben Sie Gemini verwendet, um den Code für die Test-Suite zu generieren.