In diesem Dokument wird erläutert, wie Sie verteiltes Tracing für Application Load Balancer mit Cloud Trace konfigurieren. Sie erstellen eine Telemetrie-Richtlinie, die auf die Weiterleitungsregel Ihres Load Balancers abzielt, und rufen dann die resultierenden Traces in Cloud Trace auf.
In den Beispielen in diesem Dokument wird eine E-Commerce-Anwendung mit der folgenden Architektur verwendet:
- Ein globaler externer Application Load Balancer, der Kundentraffic für einen Web-Storefront empfängt.
- Ein regionaler interner Application Load Balancer, der Bezahlvorgangsanfragen vom Storefront an interne Warenkorb-, Inventar- und Zahlungsdienste weiterleitet.
Informationen zur Funktionsweise des verteilten Tracings, einschließlich Stichprobenmodi und Verarbeitung von Trace-Kontext-Headern, finden Sie unter Verteiltes Tracing – Übersicht.
Hinweis
Aktivieren Sie die Cloud Trace API und die Network Services API in Ihrem Projekt:
gcloud services enable \ cloudtrace.googleapis.com \ networkservices.googleapis.comAchten Sie darauf, dass ein unterstützter Load Balancer bereitgestellt ist. Hier finden Sie weitere Informationen:
Notieren Sie sich den Namen und den Bereich der Weiterleitungsregel Ihres Load Balancers. Der Bereich der Weiterleitungsregel hängt vom Typ des Load Balancers ab:
- Globale Weiterleitungsregel: Wird von globalen externen Application Load Balancern und regionenübergreifenden internen Application Load Balancern verwendet.
- Regionale Weiterleitungsregel: Wird von regionalen externen Application Load Balancern und regionalen internen Application Load Balancern verwendet.
Verwenden Sie den Befehl
gcloud compute forwarding-rules list, um die Weiterleitungsregeln in Ihrem Projekt aufzulisten:gcloud compute forwarding-rules list
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen (Identity and Access Management) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren von Telemetrie-Richtlinien und zum Aufrufen von Traces benötigen:
- Zum Erstellen, Aktualisieren oder Löschen von Telemetrie-Richtlinien:
Compute-Netzwerkadministrator
(
roles/compute.networkAdmin) oder Compute-Administrator (roles/compute.admin) - Traces in der Google Cloud -Konsole ansehen:
Cloud Trace-Nutzer
(
roles/cloudtrace.user)
Damit der Load Balancer Trace-Spans in Cloud Trace schreiben kann, weisen Sie den folgenden Dienstkonten die Rolle Cloud Trace-Agent (roles/cloudtrace.agent) für Ihr Projekt zu:
- Compute Engine-Dienst-Agent:
service-PROJECT_NUMBER@compute-system. - Dienst-Agent für Netzwerksicherheit:
service-PROJECT_NUMBER@gcp-sa-networksecurity. - Die Dienstkonten Ihrer Backend-Arbeitslasten, wenn Ihre Backends ihre eigenen Spans nach Cloud Trace exportieren. Ohne diese Rolle zeigt Cloud Trace nur den Load-Balancer-Span an und der Trace enthält keine Backend-Spans.
Ersetzen Sie PROJECT_NUMBER durch dieGoogle Cloud -Projektnummer.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Konfiguration der Telemetrie-Richtlinie
Sie definieren eine Telemetrie-Richtlinie in einer YAML-Datei im folgenden Format:
name: "projects/PROJECT_ID/locations/LOCATION/telemetryPolicies/POLICY_NAME"
displayName: "DISPLAY_NAME"
telemetryTarget:
resources:
- "FORWARDING_RULE_URI"
tracingConfiguration:
samplingRate: SAMPLING_RATE
parentBasedSampling:
enabled: ENABLE_PARENT_BASED_SAMPLING
samplingRate: PARENT_BASED_SAMPLING_RATE
In der folgenden Tabelle werden die Felder in einer Telemetrie-Richtlinie beschrieben:
| Feld | Beschreibung |
|---|---|
name |
Der Ressourcenname der Telemetrie-Richtlinie. Ersetzen Sie Folgendes:
|
displayName |
Optional. Ein menschenlesbarer Name (DISPLAY_NAME) für die Telemetrie-Richtlinie. |
telemetryTarget.resources |
Eine Liste der vollständigen Ressourcennamen (
|
tracingConfiguration.samplingRate |
Der Anteil der zu verfolgenden Anfragen (SAMPLING_RATE), angegeben als Wert von 0.0 (0 %) bis 1.0 (100 %). Beispiel: 0.01 nimmt eine Stichprobe von 1 % der Anfragen. Der Standardwert ist 0.0. |
tracingConfiguration.parentBasedSampling.enabled |
Optional. Ob der Load Balancer das Stichproben-Flag im eingehenden W3C-traceparent-Header (ENABLE_PARENT_BASED_SAMPLING) berücksichtigt, ist true oder false. Der Standardwert ist false. Wird nur auf internen Application Load Balancern unterstützt. |
tracingConfiguration.parentBasedSampling.samplingRate |
Optional. Der Anteil der Upstream-Stichprobenanfragen, die verfolgt werden sollen (PARENT_BASED_SAMPLING_RATE), angegeben als Wert von 0.0 bis 1.0. Beispiel: 1.0 verfolgt alle Anfragen, die bereits von einem Upstream-Client oder -Dienst erfasst wurden. |
Tracing für einen externen Load Balancer konfigurieren
In diesem Beispiel wird die probabilistische Stichprobenerhebung für die Weiterleitungsregel eines globalen externen Application Load Balancers für einen E-Commerce-Storefront konfiguriert. Bei einer Abtastrate von 0.01 wird 1 % der Anfragen erfasst. So werden Edge-Latenz und Fehler erfasst, während die Cloud Trace-Aufnahmekosten bei hohem Traffic vorhersehbar bleiben.
Erstellen Sie eine YAML-Datei mit dem Namen
storefront-tracing-policy.yaml:cat <<EOF > storefront-tracing-policy.yaml name: "projects/PROJECT_ID/locations/global/telemetryPolicies/storefront-tracing-policy" displayName: "Tracing policy for the storefront load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 EOFErsetzen Sie Folgendes:
PROJECT_ID: die ID IhresGoogle Cloud -ProjektsFORWARDING_RULE_NAME: der Name der globalen Weiterleitungsregel Ihres Load Balancers
Ersetzen Sie bei einem regionalen externen Application Load Balancer
globalim Richtliniennamen durch die Region der Weiterleitungsregel und verwenden Sie das Format für regionale Weiterleitungsregeln.Importieren Sie die Telemetrie-Richtlinie mit dem Befehl
gcloud beta network-services telemetry-policies import:gcloud beta network-services telemetry-policies import storefront-tracing-policy \ --source=storefront-tracing-policy.yaml \ --location=global
Tracing für einen internen Load Balancer konfigurieren
In diesem Beispiel wird ein regionaler interner Application Load Balancer für interne Bezahl- und Zahlungsdienste konfiguriert. Die Richtlinie verwendet die folgenden Stichprobeneinstellungen:
- Eine Baseline-
samplingRatevon0.01(1 %) für Anfragen, die keine Upstream-Stichprobenentscheidung enthalten. - Übergeordnetes Sampling mit einem
samplingRatevon1.0(100 %), sodass jede Checkout-Anfrage, die bereits im Storefront oder von einem Upstream-Dienst erfasst wurde, über den internen Load Balancer verfolgt wird.
So konfigurieren Sie die Richtlinie:
Erstellen Sie eine YAML-Datei mit dem Namen
checkout-tracing-policy.yaml:cat <<EOF > checkout-tracing-policy.yaml name: "projects/PROJECT_ID/locations/REGION/telemetryPolicies/checkout-tracing-policy" displayName: "Tracing policy for the internal checkout load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 parentBasedSampling: enabled: true samplingRate: 1.0 EOFErsetzen Sie Folgendes:
PROJECT_ID: die ID IhresGoogle Cloud -ProjektsREGION: die Region der Weiterleitungsregel, z. B.us-central1FORWARDING_RULE_NAME: der Name der regionalen Weiterleitungsregel Ihres Load Balancers
Verwenden Sie für einen regionenübergreifenden internen Application Load Balancer
globalals Standort im Richtliniennamen und das Format für globale Weiterleitungsregeln.Importieren Sie die Telemetrie-Richtlinie:
gcloud beta network-services telemetry-policies import checkout-tracing-policy \ --source=checkout-tracing-policy.yaml \ --location=REGION
Telemetrie-Richtlinie prüfen
Mit dem Befehl gcloud beta network-services telemetry-policies describe können Sie prüfen, ob die Telemetrie-Richtlinie vorhanden ist und auf die richtigen Weiterleitungsregeln abzielt:
gcloud beta network-services telemetry-policies describe POLICY_NAME \
--location=LOCATION
Ersetzen Sie Folgendes:
POLICY_NAME: der Name der Telemetrie-RichtlinieLOCATION:globaloder die Region der Telemetrie-Richtlinie
Verwenden Sie den gcloud beta network-services telemetry-policies list-Befehl, um alle Telemetrie-Richtlinien an einem Standort aufzulisten:
gcloud beta network-services telemetry-policies list \
--location=LOCATION
Telemetrie-Richtlinie aktualisieren
So ändern Sie die Stichprobeneinstellungen oder wenden dieselbe Richtlinie auf zusätzliche Weiterleitungsregeln an:
Bearbeiten Sie die YAML-Richtliniendatei. Wenn Sie beispielsweise die Storefront-Richtlinie auf mehrere globale Weiterleitungsregeln anwenden möchten, fügen Sie jede Weiterleitungsregel der Liste
telemetryTarget.resourceshinzu:telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/storefront-https-fr" - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/cart-https-fr"Importieren Sie die aktualisierte Richtlinie:
gcloud beta network-services telemetry-policies import POLICY_NAME \ --source=POLICY_FILE \ --location=LOCATIONErsetzen Sie
POLICY_FILEdurch den Pfad zur YAML-Datei Ihrer Richtlinie.
Traces ansehen
Nachdem Sie das Tracing konfiguriert und Traffic über Ihren Load Balancer gesendet haben, können Sie die Traces in der Google Cloud Console aufrufen:
Rufen Sie in der Google Cloud Console die Seite Trace Explorer auf.
Wählen Sie Ihr Google Cloud Projekt aus.
Geben Sie im Feld Filter einen Filter ein, um die Traces zu finden, die Sie prüfen möchten. Beispiel: Attribut-ID oder Latenzschwellenwert.
Optional: Wenn Sie einen bestimmten Trace untersuchen möchten, klicken Sie in der Symbolleiste auf Trace-ID und geben Sie die Trace-ID ein.
Klicken Sie auf einen Trace, um die zugehörigen Spans in der Zeitachsen- und Diagrammansicht aufzurufen.
Prüfen Sie den Load-Balancer-Span, um Details wie die Gesamtdauer und das Backend zu sehen, das die Anfrage verarbeitet hat.
Weitere Informationen zur Verwendung von Trace Explorer finden Sie unter Traces suchen und untersuchen.
Traces mit Logs und Messwerten korrelieren
Sie können Trace-Spans des Load Balancers mit Anfragelogs und Messwerten korrelieren, um die Ursache von Latenz oder Fehlern zu isolieren.
Traces mit Logs korrelieren
Wenn Sie das Logging für Ihren Backend-Dienst aktivieren, fügt der Load Balancer jedem Anfrage-Logeintrag für eine Stichprobenanfrage ein trace-Feld hinzu. Das Feld hat das folgende Format:
projects/PROJECT_ID/traces/TRACE_ID
Trace aus einem Load-Balancer-Logeintrag ansehen
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Maximieren Sie einen Logeintrag für den Load Balancer.
Klicken Sie in der Zusammenfassung des Logeintrags auf das Trace-Symbol.
Wählen Sie Trace-Details ansehen aus.
Der Trace wird auf der Seite Trace Explorer geöffnet.
Load-Balancer-Logs aus einem Trace ansehen
Rufen Sie in der Google Cloud Console die Seite Trace Explorer auf.
Klicken Sie auf einen Trace, um den Bereich Details zu öffnen.
Klicken Sie auf Logs ansehen.
Die Load-Balancer-Logeinträge für die Anfrage werden angezeigt.
Traces mit Messwerten korrelieren
Vergleichen Sie Latenzspitzen in Load-Balancer-Messwerten mit Trace-Span-Aufschlüsselungen, um festzustellen, ob die Latenz im Load Balancer oder im Backend entsteht. Sie können diese Messwerte im Metrics Explorer in Cloud Monitoring ansehen und abfragen. Verwenden Sie die folgenden Messwerte:
- Globaler externer Application Load Balancer:
loadbalancing.googleapis.com/https/total_latenciesundloadbalancing.googleapis.com/https/backend_latencies - Regionaler externer Application Load Balancer:
loadbalancing.googleapis.com/https/external/regional/total_latencies - Interner Application Load Balancer:
loadbalancing.googleapis.com/https/internal/total_latencies
Tracing deaktivieren
So beenden Sie das Tracing von Anfragen für einen Load Balancer:
- Entfernen Sie die Weiterleitungsregel aus der Liste
telemetryTarget.resourcesder Richtlinie und importieren Sie dann die aktualisierte Richtlinie. Löschen Sie die Telemetrie-Richtlinie mit dem Befehl
gcloud beta network-services telemetry-policies delete:gcloud beta network-services telemetry-policies delete POLICY_NAME \ --location=LOCATION
Best Practices
Beachten Sie beim Konfigurieren des verteilten Tracings die folgenden Best Practices:
- Abtastraten für Ihr Trafficvolumen festlegen: Verwenden Sie für Produktionsarbeitslasten mit hohem Traffic einen
samplingRate-Wert von0.01(1 %) oder0.001(0,1 %), um die Beobachtbarkeit mit den Kosten für die Cloud Trace-Aufnahme in Einklang zu bringen. - Übergeordnete Stichprobenerhebung für mehrstufige Architekturen verwenden: Aktivieren Sie auf internen Application Load Balancern die übergeordnete Stichprobenerhebung, damit Upstream-Stichprobenanfragen über jeden internen Hop hinweg verfolgt werden.
- Backends instrumentieren: Verwenden Sie ein OpenTelemetry SDK mit dem W3C Trace Context-Propagator in Ihren Backend-Diensten, damit Backend-Spans dem Trace beitreten, den der Load Balancer startet.
Fehlerbehebung
In diesem Abschnitt werden häufige Probleme und ihre Lösungen beschrieben.
Traces werden nicht in Cloud Trace angezeigt
Wenn Traces nicht in Cloud Trace angezeigt werden, gehen Sie so vor:
Prüfen Sie, ob die Cloud Trace API in Ihrem Projekt aktiviert ist:
gcloud services enable cloudtrace.googleapis.com \ --project=PROJECT_IDPrüfen Sie, ob die Rolle „Cloud Trace-Agent“ (
roles/cloudtrace.agent) den unter Erforderliche Rollen aufgeführten Dienstkonten zugewiesen ist.Prüfen Sie, ob die Telemetrie-Richtlinie am richtigen Speicherort vorhanden ist und auf die richtige Weiterleitungsregel verweist. Weitere Informationen finden Sie unter Telemetrie-Richtlinie prüfen.
Prüfen Sie die konfigurierte
samplingRate. Wenn das Trafficvolumen oder die Abtastrate niedrig ist, erfasst der Load Balancer Traces möglicherweise nicht sofort. Wenn Sie prüfen möchten, ob das Tracing funktioniert, setzen SiesamplingRatevorübergehend auf1.0und stellen Sie nach Abschluss des Tests die Produktionsrate wieder her.
Trace-Spans sind getrennt oder unvollständig
Wenn Load-Balancer-Spans als separate Root-Traces und nicht als Teil der Traces Ihrer Anwendung angezeigt werden, gehen Sie so vor:
Prüfen Sie bei internen Application Load Balancern, ob die übergeordnete Stichprobenerhebung (
parentBasedSampling.enabled: true) in der Telemetrie-Richtlinie aktiviert ist.Prüfen Sie, ob die Dienstkonten Ihrer Client- und Backend-Arbeitslasten die Rolle „Cloud Trace-Agent“ (
roles/cloudtrace.agent) haben, damit ihre Spans nach Cloud Trace exportiert werden können.Prüfen Sie, ob Ihre Anwendungen ein OpenTelemetry SDK mit aktivierter W3C Trace Context-Weitergabe verwenden, damit der Header
traceparentüber Dienstgrenzen hinweg weitergegeben wird. Weitere Informationen finden Sie in der OpenTelemetry-Dokumentation zur Kontextweitergabe.