Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Kurzanleitung: Anwendungslatenz mit Cloud Trace verfolgen

Anwendungslatenz mit Cloud Trace verfolgen

So verwenden Sie Cloud Trace:

  1. Stellen Sie eine Beispielanwendung in einem Google Kubernetes Engine-Cluster (GKE) bereit.

  2. Erstellen Sie einen Trace, indem Sie eine HTTP-Anfrage an die Beispielanwendung senden.

  3. Verwenden Sie die Cloud Trace-Oberfläche, um die Latenzinformationen des von Ihnen erstellten Trace anzuzeigen.

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:

  1. 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.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. 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:

  1. Klicken Sie zum Öffnen von Cloud Shell in der Symbolleiste der Google Cloud Console auf Cloud Shell aktivieren:

    Aktivieren Sie Cloud Shell.

    Nach kurzer Zeit wird eine Cloud Shell-Sitzung in der Google Cloud Console geöffnet.

  2. Führen Sie den folgenden Befehl aus, um den Quellcode von GitHub herunterzuladen:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  3. Aktivieren Sie die Google Kubernetes Engine API mit dem folgenden Befehl:

    gcloud services enable container.googleapis.com
    
  4. Führen Sie die folgenden Befehle in Cloud Shell aus, um den GKE-Cluster cloud-trace-demo in der Zone us-central1-c zu erstellen:

    ZONE=us-central1-c
    gcloud container clusters create cloud-trace-demo \
       --zone $ZONE
    

    Die Ausführung dieses Befehls kann einige Minuten dauern. Wenn der Vorgang erfolgreich abgeschlossen ist, enthält Ihr Google Cloud-Projekt den GKE-Cluster cloud-trace-demo. Sie benötigen die Berechtigung zum Erstellen von Clustern mit externem Zugriff in Ihrem Google Cloud-Projekt.

  5. Aktualisieren Sie die Anmeldedaten Ihres GKE-Clusters mit dem folgenden Befehl:

    gcloud container clusters get-credentials cloud-trace-demo --zone $ZONE
    
  6. Prüfen Sie mit dem folgenden Befehl den Zugriff auf den Cluster:

    kubectl get nodes
    

    Hier 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.2300
    
  7. Stellen Sie die Beispielanwendung bereit, indem Sie den folgenden Befehl ausführen:

    cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
    

    Das Skript setup.sh konfiguriert drei Dienste der Anwendung mit einem vordefinierten Image. Die Arbeitslasten haben die Namen cloud-trace-demo-a, cloud-trace-demo-b und cloud-trace-demo-c. Das Einrichtungsskript wartet, bis alle Ressourcen bereitgestellt wurden, sodass die Konfiguration mehrere Minuten dauern kann.

    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. You can access the demo at http://34.82.132.95/
    

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.

Verwenden Sie den folgenden Befehl, um ein Trace durch Senden einer curl-Anfrage an cloud-trace-demo-a zu erstellen:

curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')

Sie können den Befehl curl mehrmals ausführen, um mehrere Traces zu generieren.

Die Ausgabe sieht in etwa so aus:

Hello, I am service A
And I am service B
Hello, I am service C

Trace-Daten ansehen

Wählen Sie in der Google Cloud Console Cloud Trace aus oder klicken Sie auf die folgende Schaltfläche:

Zu Trace

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 Bereich Übersicht im Bereich Aktuelle Traces am interessantesten:

Bereich "Aktuelle Traces", der die neuesten Traces und ihre Latenz anzeigt.

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 Trace-Liste:

Kurzanleitung Fenster "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 einen Trace im Detail anzusehen:

Wasserfall mit fünf Spannen

Nachdem Sie einen Punkt ausgewählt haben, sehen Sie ein Wasserfalldiagramm, in dem jede Zeile einem Span entspricht. Die Details des Spans, z. B. dessen Trace-Labels, der Methode und zusammenfassende Informationen zur Befehlslatenz, werden in der Detailtabelle angezeigt. Wenn Sie Details zu einem Span aufrufen möchten, klicken Sie im Wasserfalldiagramm auf die entsprechende Zeile:

Im Detailbereich werden zusätzliche Details zu jedem Span angezeigt.

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 OpenTelemetry-Pakete und wird in einem Google Kubernetes Engine-Cluster ausgeführt.

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 Anwendung importiert mehrere OpenTelemetry-Pakete:

    from opentelemetry import trace
    from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
    from opentelemetry.instrumentation.flask import FlaskInstrumentor
    from opentelemetry.instrumentation.requests import RequestsInstrumentor
    from opentelemetry.propagate import set_global_textmap
    from opentelemetry.propagators.cloud_trace_propagator import CloudTraceFormatPropagator
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
  • Die Anwendung instrumentiert Webanfragen mit Trace-Kontext und verfolgt automatisch Flask-Handler und -Anfragen an andere Dienste:

    app = flask.Flask(__name__)
    FlaskInstrumentor().instrument_app(app)
    RequestsInstrumentor().instrument()
  • Die Anwendung konfiguriert den Cloud Trace-Exporter als Trace-Anbieter, der den Trace-Kontext im Cloud Trace-Format weitergibt:

    def configure_exporter(exporter):
        set_global_textmap(CloudTraceFormatPropagator())
        tracer_provider = TracerProvider()
        tracer_provider.add_span_processor(BatchSpanProcessor(exporter))
        trace.set_tracer_provider(tracer_provider)
    
    configure_exporter(CloudTraceSpanExporter())
    tracer = trace.get_tracer(__name__)
  • Das folgende Code-Snippet zeigt, wie Anfragen in Python gesendet werden. OpenTelemetry verbreitet implizit den Trace-Kontext für Sie mit Ihren ausgehenden Anfragen:

    if endpoint is not None and endpoint != "":
        data = {'body': keyword}
        response = requests.get(
            endpoint,
            params=data,
        )
        return keyword + "\n" + response.text
    else:
        return keyword, 200

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, der Dienst b ist für den Aufruf des Dienstes c konfiguriert. 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:

  1. kubectl ruft die IP-Adresse des Dienstes cloud-trace-demo-a ab.
  2. Der Befehl curl sendet dann die HTTP-Anfrage an den Dienst a.
  3. Dienst a empfängt die HTTP-Anfrage und sendet eine Anfrage an den Dienst b.
  4. Dienst b empfängt die HTTP-Anfrage und sendet eine Anfrage an den Dienst c.
  5. Der Dienst c empfängt die HTTP-Anfrage von Dienst b und gibt den String Hello, I am service C an Dienst b zurück.
  6. Der Dienst b empfängt die Antwort vom Dienst c, hängt ihn an den String And I am service B an und gibt das Ergebnis an Dienst a zurück.
  7. Der Dienst a empfängt die Antwort vom Dienst b und hängt ihn an den String Hello, I am service A an.
  8. Die Antwort vom Dienst a 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:

    1. Klicken Sie in der Google Cloud Console auf Navigationsmenü und wählen Sie Startseite aus.
    2. Klicken Sie im Bereich Projektinformationen auf Zu den Projekteinstellungen.
    3. 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 cloud-trace-demo mit dem folgenden Befehl:

    gcloud container clusters delete cloud-trace-demo --zone $ZONE
    

Nächste Schritte