1. Einführung
In diesem Codelab erfahren Sie, wie Sie die Logging- und Monitoring-Tools nutzen, die allen Entwicklern zur Verfügung stehen, die mit Cloud Functions arbeiten. Die Tools sind in jeder Cloud-Funktion enthalten, die Sie in allen unterstützten Sprachen bereitstellen. Sie sollen Ihnen helfen, produktiver zu sein, wenn Sie serverlosen Code schreiben und ausführen.

Sie verwenden eine HTTP-ausgelöste Cloud Functions-Funktion, aber alles, was Sie behandeln, gilt auch für andere Sprachen und für Cloud Functions-Funktionen, die durch andere Ereignisse ausgelöst werden.
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder G Suite-Konto haben, müssen Sie eines erstellen.
Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird später in diesem Codelab als PROJECT_ID bezeichnet.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.
Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Folgen Sie bitte der Anleitung im Abschnitt „Bereinigen“, in der Sie erfahren, wie Sie Ressourcen herunterfahren können, damit nach Abschluss dieser Anleitung keine Gebühren anfallen. Neue Nutzer von Google Cloud kommen für das Programm für den kostenlosen Testzeitraum mit einem Guthaben von 300$ infrage.
Cloud Shell
Cloud Functions und die zugehörigen Logging- und Monitoringfunktionen können zwar per Fernzugriff von Ihrem Laptop aus verwendet werden, in diesem Lab verwenden Sie jedoch Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird.
Diese Debian-basierte virtuelle Maschine verfügt über alle Entwicklungstools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Für dieses Codelab benötigen Sie also nur einen Browser (es funktioniert auch auf einem Chromebook).
- Klicken Sie zum Aktivieren von Cloud Shell in der Cloud Console einfach auf Cloud Shell aktivieren
. Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind und für das Projekt schon Ihre PROJECT_ID eingestellt ist.
gcloud auth list
Befehlsausgabe
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Wenn das Projekt aus irgendeinem Grund nicht festgelegt ist, führen Sie einfach den folgenden Befehl aus:
gcloud config set project <PROJECT_ID>
Suchst du nach deinem PROJECT_ID? Sehen Sie nach, welche ID Sie in den Einrichtungsschritten verwendet haben, oder suchen Sie sie im Cloud Console-Dashboard:
In Cloud Shell werden auch einige Umgebungsvariablen standardmäßig festgelegt, die für zukünftige Befehle nützlich sein können.
echo $GOOGLE_CLOUD_PROJECT
Befehlsausgabe
<PROJECT_ID>
- Legen Sie zum Schluss die Standardzone und die Projektkonfiguration fest.
gcloud config set compute/zone us-central1-f
Sie können verschiedene Zonen auswählen. Weitere Informationen finden Sie unter Regionen und Zonen.
3. Einfache Cloud Functions-Funktion bereitstellen
Damit Sie etwas überwachen können, erstellen Sie eine „Hello, World“-Cloud Functions-Funktion. Klicken Sie im linken Menü der Google Cloud Console auf Cloud Functions und dann auf Funktion erstellen.

Geben Sie „hello-monitor“ als Namen für die neue Cloud-Funktion ein.

Behalten Sie alle Standardeinstellungen für den Quellcode bei. Sie können jedoch eine andere Sprache/Laufzeit auswählen, wenn Sie möchten.

Klicken Sie abschließend auf Erstellen.

Ihre Cloud-Funktion sollte mit einem grünen Häkchen daneben aufgeführt sein. Das bedeutet, dass sie aufgerufen werden kann.

4. Cloud Functions-Funktion testen und Traffic mit einem Load Generator senden
Nachdem die Cloud-Funktion erfolgreich bereitgestellt wurde, testen Sie sie über die Befehlszeile.
Geben Sie zuerst den folgenden Befehl in Cloud Shell ein:
$ gcloud functions describe hello-monitor
Daraufhin sollte eine Beschreibung der Cloud-Funktion zurückgegeben werden, einschließlich einer URL für httpsTrigger, dem HTTP(S)-Endpunkt zum Aufrufen der Cloud-Funktion. Sie sollte so aussehen: https://<region>-<project-id>.cloudfunctions.net/hello-monitor.
Die Cloud-Funktion sollte jetzt ganz einfach mit dem Befehl curl für diese URL ausgelöst werden können.
$ curl https://<region>-<project-id>.cloudfunctions.net/hello-monitor Hello World!
Verwenden Sie nun Vegeta, ein einfaches HTTP-Load-Testing-Tool. Geben Sie in Cloud Shell einfach den folgenden Befehl ein, um es zu installieren :
$ go get -u github.com/tsenart/vegeta
Verwenden Sie den folgenden Befehl, um einige Minuten lang fünf Anfragen pro Sekunde an Ihre Cloud-Funktion zu senden:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
5. Durch die Logs navigieren
Klicken Sie in der Detailansicht Ihrer Cloud-Funktion auf Logs ansehen.

Dadurch sollten Sie zum Stackdriver Logging-Bereich Ihres Projekts gelangen, in dem nur Ihre Cloud Functions-Logs angezeigt werden.

Alle Anfragen an Ihre Cloud-Funktion sollten den Statuscode 200 zurückgeben.
Wenn Sie sich die Logs ansehen, haben Sie folgende Möglichkeiten:
- Nach Logebene filtern (in Ihrem Fall haben alle Logs die Ebene
debug). - Wählen Sie einen bestimmten Zeitraum aus (relativ oder absolut).
- Aktiviere das Log-Streaming (mit Play
oben auf dem Bildschirm). - Kopieren Sie einen Link zum Logeintrag, um ihn mit Teammitgliedern zu teilen.
- Logeintrag im Ressourcenkontext anzeigen
- Logeinträge anheften (als visuelle Hinweise).
- Logs nach BigQuery, Cloud Storage oder Pub/Sub exportieren oder einfach als JSON- oder CSV-Dateien herunterladen.
6. Funktion aktualisieren
Rufen Sie in der Cloud Console die Ansicht Funktionsdetails auf und sehen Sie sich den Spike an, den Sie mit Ihrem Lastentesttool bei der Anzahl der Aufrufe pro Sekunde und der Ausführungszeit erstellt haben.

Ein weiteres detaillierteres Tool zum Beobachten von Latenz und RPC-Aufrufen ist Stackdriver Trace. Bevor Sie es verwenden können, müssen Sie jedoch einige Änderungen an Ihren Cloud Functions vornehmen. Gehen Sie dazu so vor:
- Fügen Sie das lebensrettende Paket
node-emojials Abhängigkeit hinzu. - Aktualisieren Sie den Funktionscode, um das node-emoji-Modul zu verwenden und eine gewisse Latenz einzuführen.
- Fügen Sie eine Umgebungsvariable hinzu, um Stackdriver Trace für Cloud Functions zu aktivieren.
Klicken Sie unter Funktionsdetails auf Bearbeiten, um die Funktion zu ändern.

Bearbeiten Sie die Datei package.json, um eine Abhängigkeit für das Paket node-emoji hinzuzufügen.
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"node-emoji": "^1.8.1"
}
}
Bearbeiten Sie die eigentliche Funktion, indem Sie den Inhalt von index.js in Folgendes ändern:
const emoji = require('node-emoji');
exports.helloWorld = (req, res) => {
let message = req.query.message || req.body.message || 'Hello World!';
// add some latency, functions are too quick!
setTimeout(function() {
message += emoji.random().emoji;
res.status(200).send(message);
}, (3 * 100)); // 300ms
};
Dadurch wird der von der Cloud-Funktion zurückgegebenen Nachricht ein zufälliges Emoji hinzugefügt, nachdem sie 300 Millisekunden pausiert hat.
Fügen Sie schließlich eine Cloud Functions-Umgebungsvariable namens GOOGLE_CLOUD_TRACE_ENABLED hinzu und legen Sie sie so auf true fest:

Klicken Sie auf Speichern.
Kehren Sie zu Cloud Shell zurück und rufen Sie den Befehl auf, mit dem Sie die neu bereitgestellte Cloud-Funktion belasten:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
Sie können sich jetzt die Liste der erstellten Traces ansehen. Es sind keine weiteren Einrichtungsschritte erforderlich und Sie benötigen keine spezielle Tracing-Bibliothek in Ihrem Code.
7. Aktualisierte Cloud Functions-Funktion nachvollziehen
Rufen Sie im Menü links Trace-Liste (unter Stackdriver Trace) auf.

Die Ausgabe sollte in etwa so aussehen:

Daraus sollte deutlich hervorgehen, dass die in Ihrer Cloud Functions-Funktion eingeführte Latenz tatsächlich 300 Millisekunden beträgt.
Jeder Punkt im Diagramm steht für eine Anfrage, zu der Sie detaillierte Informationen wie Zeitstempel, HTTP-Methode und -Status, Labels, einen Link zum entsprechenden Logeintrag und alle nachfolgenden RPC-Aufrufe der Cloud-Funktion aufrufen können.

Wenn Sie heranzoomen möchten, klicken Sie einfach auf das Diagramm und ziehen Sie den Mauszeiger. 
Wenn Sie herauszoomen möchten, klicken Sie oben auf der Seite auf Zoom rückgängig machen.
Da Sie nur eine Cloud Functions-Funktion bereitgestellt haben, werden im Diagramm nur GET-Anfragen für den hello-monitor-URI angezeigt. Sie können Traces jedoch nach HTTP-Methode (GET, POST, DELETE), nach HTTP-Status (2XX, 3XX) oder mit dem Anfragefilter filtern.
Rufen Sie im Menü auf der linken Seite die Übersicht auf:

Auf dieser Übersichtsseite finden Sie aktuelle Traces und andere Statistiken.

Sie können auch benutzerdefinierte Berichte erstellen, die auf einer Kombination aus einem URI-Anfragefilter, einer HTTP-Methode, einem HTTP-Status und einem Zeitraum basieren. Sie können die generierten Werte sogar mit einer Zeitachse vergleichen.

Wenn Sie die richtigen Zeiträume mit genügend Datenpunkten einrichten, können Sie einen Bericht erstellen, der die wichtige Latenzverschiebung zwischen der ursprünglichen Cloud-Funktion und der neuen zeigt.


Mit einem solchen benutzerdefinierten Bericht lässt sich herausfinden, wann ein Leistungsproblem aufgetreten ist, und ein Service Level Indicator (SLI) wie die Latenz von Endnutzeranfragen lässt sich verfolgen.
8. Zeit, die Ressourcen zu bereinigen
Damit ist das Codelab abgeschlossen.
Cloud Functions und Stackdriver-Tools sind serverlose Plattformen, für die keine Kosten anfallen, wenn sie nicht verwendet werden. Trotzdem sollten Sie Ihre Cloud-Funktion löschen. Wählen Sie unter Cloud Functions auf der Seite Übersicht einfach hello-monitor aus und klicken Sie auf Löschen.

9. Nächste Schritte
Weitere Informationen finden Sie hier:
/