Mit OpenTelemetry-Tracing können Sie die Latenz verschiedener Vorgänge der Pub/Sub-Clientbibliotheken wie Batchverarbeitung, Freigabe und Ablaufsteuerung. Diese Informationen können dir bei der Fehlerbehebung von Problemen mit der Clientbibliothek helfen.
Hier sind einige mögliche Anwendungsfälle für OpenTelemetry-Tracing:
- Die Veröffentlichungslatenz für Ihren Dienst ist höher als normal.
- Es kommt zu einer hohen Anzahl von Nachrichtenwiederbestellungen.
- Eine Änderung an der Callback-Funktion deines Abonnentenclients führt dazu, dass die Verarbeitung länger als gewöhnlich dauert.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie OpenTelemetry konfigurieren:
- Pub/Sub mit einem der Clients einrichten Bibliotheken.
- Installieren Sie das OpenTelemetry SDK. und richten Sie einen Trace-Exporter und einen Tracer-Anbieter ein.
- Cloud Trace aktivieren API hinzu.
- Informationen zum Lesen von Cloud Observability-Traces
Erforderliche Rollen
Damit das Dienstkonto die erforderlichen Berechtigungen zum Exportieren von Protokollen in Cloud Trace hat, bitten Sie Ihren Administrator, dem Dienstkonto die folgenden IAM-Rollen für Ihr Projekt zu erteilen:
-
Alle:
Cloud Trace-Agent (
roles/cloudtrace.agent
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten Berechtigungen zum Exportieren von Traces nach Cloud Trace Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um Traces nach Cloud Trace zu exportieren:
-
Alle:
cloudtrace.traces.patch
Ihr Administrator kann dem Dienstkonto möglicherweise auch diese Berechtigungen mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erteilen.
OpenTelemetry-Tracing-Workflow
Zum Einrichten von OpenTelemetry-Tracing verwenden Sie die Pub/Sub-Clientbibliotheken und das OpenTelemetry SDK. Mit dem SDK müssen Sie einen Trace-Exporteur und einen Tracer-Anbieter einrichten, bevor Sie eine Verbindung zu den Pub/Sub-Bibliotheken herstellen können. In einigen Bibliotheken ist die Einrichtung eines Tracer-Anbieters optional.
Trace-Exporter Das OpenTelemetry SDK verwendet den Trace-Exporter, um zu bestimmen, wohin Traces gesendet werden.
Tracer-Anbieter Die Pub/Sub-Clientbibliotheken verwenden den Tracer. Anbieter, um Traces zu erstellen.
Mit den folgenden Schritten können Sie die Aufrufabfolge einrichten:
- Instanziieren Sie einen Cloud Trace OpenTelemetry-Exporter.
- Erstellen und registrieren Sie bei Bedarf einen Tracer-Anbieter mit dem OpenTelemetry SDK.
- Konfigurieren Sie den Client mit der Option zum Aktivieren des OpenTelemetry-Tracings.
- Verwende die Pub/Sub-Clientbibliotheken, um eine Nachricht zu veröffentlichen.
So funktioniert das Tracing
Für jede veröffentlichte Nachricht erstellt die Clientbibliothek eine neue Spur. Dieser Trace stellt den gesamten Lebenszyklus der Nachricht dar, ab dem Moment, in dem Sie eine an, wenn die Nachricht bestätigt wurde. Ein Trace enthält Informationen wie die Dauer von Vorgängen, übergeordnete und untergeordnete Spans sowie verknüpfte Spans.
Ein Trace besteht aus einem Stamm-Span und den zugehörigen untergeordneten Spans. Diese Spannen repräsentieren die Arbeit, die die Clientbibliothek bei der Verarbeitung einer Nachricht leistet. Jedes Nachrichten-Trace enthält Folgendes:
- Veröffentlichung: Ablaufsteuerung, Schlüsselplanung, Batching und Länge des RPCs zur Veröffentlichung.
- Für Abos Nebenläufigkeitskontrolle, das Bestellen von Schlüsselplanung und Leasingverwaltung.
Um Informationen von der Veröffentlichungsseite an die Aboseite weiterzuleiten, fügen die Clientbibliotheken ein spezifisches Attribut für die Nachverfolgung auf der Veröffentlichungsseite ein. Der Kontextübertragungsmechanismus ist nur aktiviert, wenn das Tracing aktiviert ist und das Präfix googclient_
vorangestellt ist.
Nachrichten mit Tracing veröffentlichen
Im folgenden Codebeispiel wird gezeigt, wie Sie die Tracing-Funktion mit der Pub/Sub-Clientbibliothek und dem OpenTelemetry SDK aktivieren. In diesem Beispiel werden die Ergebnisse der Aufrufabfolge nach Cloud Trace exportiert.
Hinweise
Beim Instanziieren des Tracer-Anbieters konfigurieren Sie eine Stichprobenrate. mit dem OpenTelemetry SDK. Anhand dieses Verhältnisses wird festgelegt, wie viele Traces das SDK erfassen soll. Eine niedrigere Rate für die Stichprobenerhebung kann dazu beitragen, die Abrechnungskosten zu senken und Ihr Dienst den Cloud Trace-Span überschreitet Kontingent.
Go
C++
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Python API.
TypeScript
Node.js
Java
Nachrichten mit Rückverfolgung empfangen
Go
C++
Python
TypeScript
Node.js
Java
Trace analysieren
In den folgenden Abschnitten finden Sie ausführliche Informationen dazu, wie Sie einen Trace in der Google Cloud Console erfassen und analysieren.
Hinweise
- Beim Veröffentlichen eines Batches von Nachrichten wird der RPC-Span für die Veröffentlichung in einem separaten Trace.
- Ein Publish-RPC hat mehrere Ursprungsbereiche, da mehrere Create-Aufrufe zu einem Publish-RPC führen können, wenn sie in einem Batch zusammengefasst werden.
Spans in OpenTelemetry können null oder einen übergeordneten Span haben.
Spans, die Batch-Vorgänge wie Veröffentlichungs-Batch, (die logisch mehrere übergeordnete Elemente haben sollten) kann nicht mit keine übergeordneten Spans vorhanden sind.
Während des Nachrichtenlebenszyklus erstellte Spans verfolgen
Die folgende Abbildung zeigt ein Beispiel für Spans, die in einem einzelnen Trace erstellt werden. für eine einzelne Nachricht.
Jeder Span kann zusätzliche Attribute haben, zusätzliche Informationen, wie z. B. die Größe der Nachrichtenbyte und die Reihenfolge der Schlüsselinformationen.
Span-Attribute übermitteln zusätzliche Metadaten wie den Reihenfolgeschlüssel der Nachricht, Nachrichten-ID und Größe der Nachricht.
Die Haupt-Veröffentlichungs- und Abo-Spans werden durch Span-Ereignisse erweitert, gibt an, wann ein Netzwerkaufruf erfolgt und wann er abgeschlossen wurde.
Häufige Probleme beheben
Die folgenden Probleme können zu Problemen beim Tracing führen:
- Das Dienstkonto, das Sie zum Exportieren von Traces verwenden, hat keine
die erforderliche Rolle
roles/cloudtrace.agent
. - Das Kontingent für die maximale Anzahl der aufgenommenen Spans in Cloud Trace wurde erreicht.
- Ihre Anwendung wird beendet, ohne den entsprechenden Leerungsvorgang aufzurufen. .