Anwendungslatenz mit Cloud Trace verfolgen
So verwenden Sie Cloud Trace:
Stellen Sie eine Beispielanwendung in einem Google Kubernetes Engine-Cluster (GKE) bereit.
Erstellen Sie einen Trace, indem Sie eine HTTP-Anfrage an die Beispielanwendung senden.
Verwenden Sie die Cloud Trace-Oberfläche, um die Latenzinformationen des von Ihnen erstellten Trace anzuzeigen.
Wenn Sie eine direkte Anleitung für diese Aufgabe direkt in der Konsole aufrufen möchten, klicken Sie auf Anleitung:
Die folgenden Abschnitte führen Sie durch dieselben Schritte wie das Klicken auf Anleitung.
Hinweis
Einige der Schritte in diesem Dokument funktionieren möglicherweise nicht richtig, wenn Ihre Organisation Einschränkungen auf Ihre Google Cloud-Umgebung anwendet. In diesem Fall können Sie möglicherweise keine Aufgaben wie das Erstellen öffentlicher IP-Adressen oder Dienstkontoschlüssel ausführen. Wenn Sie eine Anfrage stellen, die einen Fehler zu Einschränkungen zurückgibt, lesen Sie, wie Anwendungen in einer eingeschränkten Google Cloud-Umgebung entwickeln werden.
Erstellen Sie ein Projekt mit aktivierter Abrechnung:
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
Ihre Anwendung herunterladen und bereitstellen
So laden Sie die Anwendung herunter und stellen sie bereit:
Klicken Sie zum Öffnen von Cloud Shell in der Symbolleiste der Google Cloud Console auf Cloud Shell aktivieren:
Nach kurzer Zeit wird in der Google Cloud Console eine Cloud Shell-Sitzung geöffnet:
Führen Sie den folgenden Befehl aus, um den Quellcode von GitHub herunterzuladen:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Führen Sie den folgenden Befehl in Cloud Shell aus, um die Google Kubernetes Engine API zu aktivieren:
gcloud services enable container.googleapis.com
Führen Sie den folgenden Befehl in Cloud Shell aus, um den GKE-Cluster
demo
zu erstellen:gcloud container clusters create demo --zone us-west1-b
Die Ausführung dieses Befehls dauert 3 bis 5 Minuten. Wenn der Vorgang erfolgreich abgeschlossen ist, enthält Ihr Google Cloud-Projekt den GKE-Cluster
demo
. Sie benötigen die Berechtigung zum Erstellen von Clustern mit externem Zugriff in Ihrem Google Cloud-Projekt. Wenn sich Ihre Google Cloud in einer Organisation oder in einem Ordner befindet, haben Sie möglicherweise diese Berechtigungen nicht, selbst wenn Sie der Projektinhaber sind. Wenn dieser Befehl fehlschlägt, wenden Sie sich an Ihren Systemadministrator.Führen Sie den folgenden
kubectl
-Befehl aus, um die erfolgreiche Erstellung zu prüfen:kubectl get nodes
Hier ein Beispiel für diesen Befehl:
NAME STATUS ROLES AGE VERSION gke-demo-default-pool-24680f3d-bzvg Ready <none> 26m v1.14.10-gke.27 gke-demo-default-pool-24680f3d-hfnq Ready <none> 26m v1.14.10-gke.27 gke-demo-default-pool-24680f3d-qnh6 Ready <none> 26m v1.14.10-gke.27
Führen Sie den folgenden Befehl aus, um den Clusterkontext festzulegen:
gcloud container clusters get-credentials demo --zone us-west1-b
Stellen Sie die Beispielanwendung bereit, indem Sie den folgenden Befehl ausführen:
cd python-docs-samples/trace/cloud-trace-demo-app && ./setup.sh
Das Skript
setup.sh
, das Teil dieses Projekts ist, konfiguriert drei verschiedene Dienste mit den Labelscloud-trace-demo-a
,cloud-trace-demo-b
undcloud-trace-demo-c
. Da das Setup-Skript einen Dienst auf einmal konfiguriert, dauert die Einrichtung mehrere Minuten. Im Folgenden finden Sie ein Beispiel dafür, was das Skript während der Ausführung in Cloud Shell ausgibt:Creating service a deployment.apps/cloud-trace-demo-a unchanged service/cloud-trace-demo-a unchanged Fetching the external IP of service a Passing external IP for the first service 34.82.132.95 to the second service template deployment.apps/cloud-trace-demo-b created service/cloud-trace-demo-b created Fetching the external IP of service b Passing external IP for the service b 35.230.0.131 to the service c deployment.apps/cloud-trace-demo-c created service/cloud-trace-demo-c created
Trace erstellen
Ein Trace beschreibt, wie lange eine Anwendung benötigt, um einen einzelnen Vorgang abzuschließen. Jeder Trace besteht aus einem oder mehreren Spans. Ein Span beschreibt, wie lange es dauert, einen vollständigen Untervorgang auszuführen. Ein Trace könnte beispielsweise beschreiben, wie lange es dauert, eine eingehende Anfrage von einem Nutzer zu verarbeiten und eine Antwort zurückzugeben. Ein Span kann beschreiben, wie lange ein bestimmter RPC-Aufruf benötigt. Weitere Informationen finden Sie im Datenmodell von Cloud Trace.
Führen Sie den folgenden Befehl aus, um einen Trace zu erstellen:
curl $(kubectl get svc cloud-trace-demo-c -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
Mit dem Befehl curl
wird eine HTTP-GET
-Anfrage generiert und die Anfrage an den Dienst mit dem Namen cloud-trace-demo-c
gesendet. Wenn diese Anfrage abgeschlossen ist, wird Helloworld!
an die Shell ausgegeben.
Sie können den Befehl curl
mehrmals ausführen, um mehrere Traces zu generieren.
Trace-Daten ansehen
Klicken Sie zum Öffnen der Cloud Trace-Oberfläche in der Google Cloud Console auf menu Navigationsmenü und wählen Sie Trace aus oder klicken Sie auf die folgende Schaltfläche:
Fenster "Übersicht"
Das Fenster Übersicht ist die Standardansicht in Trace. In diesem Fenster werden Latenzdaten und zusammenfassende Informationen angezeigt, einschließlich eines Analyseberichts. Wenn Sie ein neues Projekt erstellt haben, ist der beliebteste Bereich des Fensters Übersicht der Bereich Aktuelle Traces:
In diesem Bereich werden die neuesten Traces und deren Latenz aufgeführt. Klicken Sie auf den zugehörigen Link, um die Details zu einem Trace aufzurufen.
Fenster "Trace-Liste"
Klicken Sie im Navigationsbereich "Trace" auf list Trace-Liste:
In diesem Fenster werden eine Grafik und eine Tabelle angezeigt. Jeder Punkt im Diagramm stellt einen Trace dar. Jeder Punkt entspricht einer Zeile in der Tabelle. Im vorherigen Screenshot sind mehrere Traces aufgeführt, was darauf hinweist, dass der Befehl curl
mehrmals ausgeführt wurde.
Wählen Sie einen Punkt im Diagramm oder eine Zeile in der Tabelle aus, um sich einen Trace im Detail anzusehen. Durch diese Aktion werden zwei Bereiche geöffnet, in denen die Details des ausgewählten Trace angezeigt werden:
Ein Bereich zeigt den Trace in einer Wasserfallgrafik an und der Bereich enthält die zugehörigen Details. Jede Zeile in der Wasserfallgrafik entspricht einem Span.
Die Details des Spans, z. B. dessen Trace-Labels, der Methode und zusammenfassende Informationen zur Befehlslatenz, werden in der Detailtabelle angezeigt. Klicken Sie zur Anzeige der Details zu einem Span auf die entsprechende Zeile in der Wasserfallgrafik. Die Spans beziehen sich auf drei verschiedene IP-Adressen. Diese entsprechen den IP-Adressen für die drei Dienste.
In diesem Trace sehen Sie, dass eine HTTP-Anfrage vom Dienstnamen empfangen wird. cloud-trace-demo-c
wird an den Dienst cloud-trace-demo-b
übergeben und dann zu cloud-trace-demo-a
, um die Option zu aktivieren.
Die Tabelle mit Details kann einen Link zu Daten enthalten, die an Cloud Logging gesendet wurden. Klicken Sie auf Ansehen, um die Informationen in der Cloud Logging-Oberfläche aufzurufen. Der folgende Screenshot zeigt ein Beispiel für ein Log, das von Trace-Daten generiert wurde:
Die in der Wasserfallansicht angezeigten IP-Adressen entsprechen den IP-Adressen der Dienste cloud-trace-demo-a
und cloud-trace-demo-b
.
Fenster "Analyseberichte"
Wenn Sie einen Bericht ansehen oder erstellen möchten, klicken Sie im Navigationsbereich Trace auf Analyseberichte. Trace erstellt automatisch Tagesberichte. Für dieses Projekt sind nicht genügend Daten vorhanden, um einen neuen Bericht zu erstellen.
Über die Anwendung
Die in dieser Kurzanleitung verwendete Beispielanwendung ist in einem GitHub-Repository verfügbar. Dieses Repository enthält Informationen zur Verwendung der Anwendung in anderen Umgebungen als Cloud Shell. Die Beispielanwendung ist in Python geschrieben, verwendet das Flask-Framework und OpenCensus-Pakete und wird in einem Google Kubernetes Engine-Cluster ausgeführt.
Die Anwendungsautoren entschieden sich für das Flask-Framework, da es die Anwendungsentwicklung vereinfacht und sie die OpenCensus Flask-Middleware verwenden wollten. Sie müssen das Flask-Framework nicht verwenden, wenn Sie Python ausführen.
Instrumentierung
Die Datei app.py
im GitHub-Repository enthält die Instrumentierung, die zum Erfassen und Senden von Trace-Daten an Ihr Google Cloud-Projekt erforderlich ist:
Die Importanweisungen für Anwendungen enthalten eine Anweisung für
Flask
und für mehrere OpenCensus-Pakete.StackdriverExporter
ist das Objekt, das Trace-Daten an Ihr Google Cloud-Projekt sendet:Die Anwendung erstellt eine Middleware-Komponente, die Flask als HTTP-Framework verwendet:
In dieser Anwendung wird das Feld
sampler
durch die OpenCensus-MethodeAlwaysOnSampler()
festgelegt. Diese Methode gibt für jede StichprobenentscheidungTrue
zurück und gewährleistet, dass 100 % der Anfragen verfolgt werden. In einer Produktionsumgebung wird nicht empfohlen, alle Anfragen nach Stichproben zu erfassen. Weitere Informationen finden Sie unter Abtastrate.Erstellen Sie in der
main
-Funktion der Anwendung die Flask-Middleware, dieStackdriverExporter()
verwendet:Die Anwendung enthält eine weitere, nicht erforderliche Änderung. Stattdessen ist diese Änderung illustriert. In der Anwendung enthält die Antwort auf die Route
/
den HeaderX-Cloud-Trace-Context
:Der Header
X-Cloud-Trace-Context
ist ein HTTP-Header, der Informationen zum aktuellen Trace enthält, einschließlich der Trace-ID. Damit verschiedene Dienste Spaninformationen zum selben Trace hinzufügen können, müssen diese Dienste die Trace-ID identifizieren. Das OpenCensus-Paket fügt diesen Kontext standardmäßig automatisch in die Antwortheader ein.
Funktionsweise der Anwendung
Zur besseren Übersichtlichkeit wird in diesem Abschnitt cloud-trace-demo
aus den Dienstnamen weggelassen. Beispiel: Der Dienst cloud-trace-demo-c
wird als c
bezeichnet.
Diese Anwendung erstellt drei Dienste mit den Namen a
, b
und c
. Es konfiguriert den Dienst c
so, dass der Dienst b
aufgerufen wird, und der Dienst b
den Dienst a
aufruft.
Weitere Informationen zur Konfiguration der Dienste finden Sie in den YAML-Dateien im GitHub-Repository.
Wenn Sie in diesem Schnellstart eine HTTP-Anfrage an den Dienst c
gesendet haben, haben Sie den folgenden curl
-Befehl verwendet:
curl $(kubectl get svc cloud-trace-demo-c -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
Der Befehl curl
funktioniert so:
kubectl
ruft die IP-Adresse des Dienstescloud-trace-demo-c
ab.- Der Befehl
curl
sendet dann die HTTP-Anfrage an den Dienstc
. - Dienst
c
empfängt die HTTP-Anfrage und sendet eine Anfrage an den Dienstb
. - Dienst
b
empfängt die HTTP-Anfrage und sendet eine Anfrage an den Diensta
. - Der Dienst
a
empfängt die Anfrage und gibt den StringHello
zurück. Der StringHello
ist ein Keyword, das als Standardargument an diesen Dienst übergeben wird. - Dienst
b
empfängt die Antwort vom Diensta
, hängt den Stringworld
an und gibt dannHelloworld
zurück. Der Stringworld
ist ein Keyword, das als Standardargument an diesen Dienst übergeben wird. - Dienst
c
empfängt die Antwort vom Dienstb
, hängt!
an und gibt dannHelloworld!
zurück. - Die Antwort vom Dienst
c
wird in Cloud Shell ausgegeben.
Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden.
Wenn Sie für diese Kurzanleitung ein neues Google Cloud-Projekt erstellt haben, löschen Sie das Projekt, damit keine Gebühren mehr anfallen. So löschen Sie das Projekt:
- Klicke in der Google Cloud Console auf menu Navigationsmenü und wähle Startseite aus.
- Klicken Sie im Bereich Projektinformationen auf Zu den Projekteinstellungen.
- Klicken Sie im Fenster Einstellungen auf Beenden und führen Sie die verbleibenden Schritte aus.
Wenn Sie für diese Kurzanleitung kein neues Google Cloud-Projekt erstellt haben, löschen Sie den Google Kubernetes Engine-Cluster mit dem Namen
demo
. Führen Sie dazu den folgenden Befehl aus:gcloud container clusters delete demo --zone us-west1-b
Weitere Informationen
- Informationen zu unterstützten Sprachen und Plattformen finden Sie unter Informationen zu Cloud Trace.
- Weitere Informationen zur Instrumentierung Ihrer Anwendungen finden Sie unter Übersicht über die Instrumentierung für Cloud Trace.
- Weitere Informationen zum Fenster Übersicht finden Sie unter Traces in der Google Cloud Console ansehen.
- Weitere Informationen zum Fenster Trace-Liste finden Sie unter Traces suchen und ansehen.
- Informationen zur Wasserfallgrafik und Trace-Details finden Sie unter Trace-Details anzeigen.
- Weitere Informationen zu Analyseberichten finden Sie unter Analyseberichte erstellen und aufrufen.
- Weitere Informationen zum Verwalten von Google Kubernetes Engine-Clustern finden Sie unter kubectl.
- Lesen Sie unsere Ressourcen zu DevOps und informieren Sie sich über das DORA-Forschungsprogramm.