Schnellstart

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.


Eine detaillierte Anleitung zu dieser Aufgabe finden Sie direkt in der Cloud Console. Klicken Sie dazu einfach auf Anleitung:

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:

  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 Ihr 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 Ihr 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:

    Cloud Shell aktivieren

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

    Cloud Shell-Sitzung

  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. Führen Sie den folgenden Befehl in Cloud Shell aus, um die Google Kubernetes Engine API zu aktivieren:

    gcloud services enable container.googleapis.com
    
  4. 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.

  5. 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
    
  6. Führen Sie den folgenden Befehl aus, um den Clusterkontext festzulegen:

    gcloud container clusters get-credentials demo --zone us-west1-b
    
  7. 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 Labels cloud-trace-demo-a, cloud-trace-demo-b und cloud-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 Navigationsmenü und wählen Sie 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 beliebteste Bereich des Fensters Übersicht der Bereich Aktuelle Traces:

Bereich &quot;Aktuelle Traces&quot;, 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 &quot;Trace-Liste&quot;.

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:

Kurzanleitung &quot;Wasserfallanzeige&quot;.

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:

LogEntry für einen Trace aus der Kurzanleitung.

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:

    from flask import Flask
    from opencensus.ext.flask.flask_middleware import FlaskMiddleware
    from opencensus.ext.stackdriver.trace_exporter import StackdriverExporter
    from opencensus.trace import execution_context
    from opencensus.trace.propagation import google_cloud_format
    from opencensus.trace.samplers import AlwaysOnSampler
  • Die Anwendung erstellt eine Middleware-Komponente, die Flask als HTTP-Framework verwendet:

    propagator = google_cloud_format.GoogleCloudFormatPropagator()
    
    def createMiddleWare(exporter):
        # Configure a flask middleware that listens for each request and applies automatic tracing.
        # This needs to be set up before the application starts.
        middleware = FlaskMiddleware(
            app,
            exporter=exporter,
            propagator=propagator,
            sampler=AlwaysOnSampler())
        return middleware

    In dieser Anwendung wird das Feld sampler durch die OpenCensus-Methode AlwaysOnSampler() festgelegt. Diese Methode gibt für jede Stichprobenentscheidung True 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, die StackdriverExporter() verwendet:

    createMiddleWare(StackdriverExporter())
  • 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 Header X-Cloud-Trace-Context:

    trace_context_header = propagator.to_header(execution_context.get_opencensus_tracer().span_context)
    response = requests.get(
        url,
        params=data,
        headers={
          'X-Cloud-Trace-Context' : trace_context_header}
    )

    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:

  1. kubectl ruft die IP-Adresse des Dienstes cloud-trace-demo-c ab.
  2. Der Befehl curl sendet dann die HTTP-Anfrage an den Dienst c.
  3. Dienst c 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 a.
  5. Der Dienst a empfängt die Anfrage und gibt den String Hello zurück. Der String Hello ist ein Keyword, das als Standardargument an diesen Dienst übergeben wird.
  6. Dienst b empfängt die Antwort vom Dienst a, hängt den String world an und gibt dann Helloworld zurück. Der String world ist ein Keyword, das als Standardargument an diesen Dienst übergeben wird.
  7. Dienst c empfängt die Antwort vom Dienst b, hängt ! an und gibt dann Helloworld! zurück.
  8. Die Antwort vom Dienst c wird in Cloud Shell ausgegeben.

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung 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 mit dem Namen demo. Führen Sie dazu den folgenden Befehl aus:

    gcloud container clusters delete demo --zone us-west1-b
    

Nächste Schritte