Latenz von Anwendungsanfragen ansehen
So erfassen und rufen Sie Latenzdaten aus Ihren Anwendungen ab:
Einen Google Kubernetes Engine-Cluster (GKE) mit der Google Cloud CLI erstellen
Laden Sie die Beispielanwendung herunter und stellen Sie sie im Cluster bereit.
Erstellen Sie einen Trace, indem Sie eine HTTP-Anfrage an die Beispielanwendung senden.
Rufen Sie die Latenzinformationen des von Ihnen erstellten Traces auf.
bereinigen.
Eine detaillierte Anleitung dazu finden Sie direkt in der Google Cloud Console. Klicken Sie dazu einfach auf Anleitung:
Vorbereitung
-
Von Ihrer Organisation definierte Sicherheitsbeschränkungen verhindern möglicherweise, dass die folgenden Schritte ausgeführt werden. Informationen zur Fehlerbehebung finden Sie unter Anwendungen in einer eingeschränkten Google Cloud -Umgebung entwickeln.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. Klicken Sie in der Symbolleiste auf terminal
Cloud Shell aktivieren und führen Sie dann die folgenden Schritte in Cloud Shell aus.Erstellen Sie einen Cluster.
gcloud container clusters create cloud-trace-demo --zone us-central1-cMit dem vorherigen Befehl, der einige Minuten benötigen kann, wird ein Standardcluster mit dem Namen
cloud-trace-demoin der Zoneus-central1-cerstellt.Konfigurieren Sie
kubectlso, dass seine Anmeldedaten automatisch so aktualisiert werden, dass es dieselbe Identität wie die Google Cloud CLI verwendet:gcloud container clusters get-credentials cloud-trace-demo --zone us-central1-cPrüfen Sie den Zugriff auf den Cluster:
kubectl get nodesHier ein Beispiel für diesen Befehl:
NAME STATUS ROLES AGE VERSION gke-cloud-trace-demo-default-pool-063c0416-113s Ready <none> 78s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-1n27 Ready <none> 79s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-frkd Ready <none> 78s v1.22.12-gke.2300So klonen Sie eine Python-Anwendung aus GitHub:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitFühren Sie den folgenden Befehl aus, um die Beispielanwendung bereitzustellen:
cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.shDas Script
setup.shkann mehrere Minuten dauern.Das Script konfiguriert drei Dienste mit einem vordefinierten Image und wartet dann, bis alle Ressourcen bereitgestellt wurden. Die Arbeitslasten heißen
cloud-trace-demo-a,cloud-trace-demo-bundcloud-trace-demo-c.Hier ein Beispiel für diesen Befehl:
deployment.apps/cloud-trace-demo-a is created service/cloud-trace-demo-a is created deployment.apps/cloud-trace-demo-b is created service/cloud-trace-demo-b is created deployment.apps/cloud-trace-demo-c is created service/cloud-trace-demo-c is created Wait for load balancer initialization complete...... Completed.-
Rufen Sie in der Google Cloud Console die Seite Trace Explorer auf:
Sie können diese Seite auch über die Suchleiste finden.
Der folgende Screenshot zeigt das Ergebnis der mehrmaligen Ausführung des Befehls
curl. Das Diagramm zeigt aggregierte Latenzdaten für Spans, die Trace-Untervorgänge beschreiben.
Wählen Sie einen Span im Diagramm oder eine Zeile in der Tabelle aus, um sich einen Trace im Detail anzusehen.
Das Dialogfeld mit den Trace-Details wird geöffnet, wie im folgenden Screenshot zu sehen ist:
Ein Gantt-Diagramm zeigt Informationen zum ausgewählten Trace. Die erste Zeile im Gantt-Diagramm steht für den Trace und jede folgende Zeile steht für einen Span im Trace.
Wenn Sie detaillierte Informationen zu einem Span aufrufen möchten, wählen Sie ihn im Gantt-Diagramm aus.
Die Anwendung importiert mehrere OpenTelemetry-Pakete:
Die Anwendung instrumentiert Webanfragen mit dem Trace-Kontext und führt automatisch Traces für Flask-Handler und Anfragen an andere Dienste aus:
Die Anwendung konfiguriert den Cloud Trace-Exporter als Trace-Provider, der den Trace-Kontext im Cloud Trace-Format weitergibt:
Im folgenden Code-Snippet wird gezeigt, wie Anfragen in Python gesendet werden. OpenTelemetry gibt den Trace-Kontext für Sie implizit mit Ihren ausgehenden Anfragen weiter:
kubectlruft die IP-Adresse des Dienstescloud-trace-demo-aab.- Der Befehl
curlsendet dann die HTTP-Anfrage an den Diensta. - Dienst
aempfängt die HTTP-Anfrage und sendet eine Anfrage an den Dienstb. - Dienst
bempfängt die HTTP-Anfrage und sendet eine Anfrage an den Dienstc. - Dienst
cempfängt die HTTP-Anfrage vom Dienstbund gibt den StringHello, I am service Can den Dienstbzurück. - Dienst
bempfängt die Antwort vom Dienstc, hängt sie an den StringAnd I am service Ban und gibt das Ergebnis an den Dienstazurück. - Dienst
aempfängt die Antwort vom Dienstbund hängt sie an den StringHello, I am service Aan. - Die Antwort vom Dienst
awird in Cloud Shell ausgegeben.
GKE-Cluster erstellen
In dieser Anleitung wird ein GKE-Standardcluster erstellt. Wenn Sie den Autopilot-Modus für Google Kubernetes Engine verwenden oder die Identitätsföderation von Arbeitslasten für GKE aktivieren, müssen Sie Ihre Anwendung für die Verwendung der Identitätsföderation von Arbeitslasten für GKE konfigurieren.
Anwendung herunterladen und bereitstellen
Laden Sie eine Python-Anwendung herunter und stellen Sie sie bereit, die das Flask-Framework und das OpenTelemetry-Paket verwendet. Die Anwendung wird auf dieser Seite im Abschnitt Über die App beschrieben.
Gehen Sie in Cloud Shell so vor:
Trace-Daten erstellen
Ein Trace beschreibt, wie lange eine Anwendung benötigt, um einen einzelnen Vorgang abzuschließen.
Führen Sie in Cloud Shell den folgenden Befehl aus, um einen Trace zu erstellen:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
Die Antwort des vorherigen Befehls sieht in etwa so aus:
Hello, I am service A
And I am service B
Hello, I am service C
Sie können den Befehl curl mehrmals ausführen, um mehrere Traces zu generieren.
Latenzdaten ansehen
Ü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 OpenTelemetry-Pakete und wird in einem GKE-Cluster ausgeführt.
In dieser Anleitung wird ein GKE-Standardcluster erstellt. Wenn Sie den Autopilot-Modus für Google Kubernetes Engine verwenden oder die Identitätsföderation von Arbeitslasten für GKE aktivieren, müssen Sie Ihre Anwendung für die Verwendung der Identitätsföderation von Arbeitslasten für GKE konfigurieren.
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:
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. Der Dienst a ist so konfiguriert, dass der Dienst b aufgerufen wird, und der Dienst b ist so konfiguriert, dass der Dienst c aufgerufen wird.
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 a gesendet haben, haben Sie den folgenden curl-Befehl verwendet:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
Der Befehl curl funktioniert so:
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:
Wenn Sie ein neues Projekt erstellt haben und es nicht mehr benötigen, löschen Sie das Projekt.
Wenn Sie ein vorhandenes Projekt verwendet haben, gehen Sie so vor:
Führen Sie in Cloud Shell den folgenden Befehl aus, um den Cluster zu löschen:
gcloud container clusters delete cloud-trace-demo --zone us-central1-c
Nächste Schritte
- Informationen zu unterstützten Sprachen und Plattformen finden Sie unter Cloud Trace-Übersicht.
Weitere Informationen zur Instrumentierung Ihrer Anwendungen finden Sie unter:
Weitere Informationen zum Fenster Trace-Explorer finden Sie unter Traces suchen und ansehen.
Weitere Informationen zur Verwaltung von GKE-Clustern finden Sie unter kubectl.