Mit OpenTelemetry-Tracing können Sie die Latenz verschiedener Pub/Sub-Clientbibliotheksvorgänge wie Batching, Leasingverwaltung und Ablaufsteuerung ermitteln und erfassen. Diese Informationen können Ihnen bei der Fehlerbehebung von Problemen mit der Clientbibliothek helfen.
Beispiele für 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.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie OpenTelemetry konfigurieren:
- Richten Sie Pub/Sub mit einer der Clientbibliotheken ein.
- Installieren Sie das OpenTelemetry SDK und richten Sie einen Trace-Exporter und einen Tracer-Anbieter ein.
- Aktivieren Sie die Cloud Trace API.
- 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 gewähren:
-
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 die Berechtigungen, die zum Exportieren von Protokollen in Cloud Trace erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um Traces in 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 Verfolgung einrichten:
- Erstellen Sie einen Cloud Trace OpenTelemetry-Exporter.
- Erstellen und registrieren Sie bei Bedarf einen Tracer-Anbieter mit dem OpenTelemetry SDK.
- Konfigurieren Sie Ihren Client mit der Option „OpenTelemetry-Tracing aktivieren“.
- Verwende die Pub/Sub-Clientbibliotheken, um eine Nachricht zu veröffentlichen.
So funktioniert das Nachverfolgen
Für jede veröffentlichte Nachricht erstellt die Clientbibliothek eine neue Spur. Dieser Trace stellt den gesamten Lebenszyklus der Nachricht dar, vom Zeitpunkt der Veröffentlichung bis zur Bestätigung. 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. Jeder Nachrichten-Trace enthält Folgendes:
- Für die Veröffentlichung Flusssteuerung, Schlüsselplanung, Batchverarbeitung und Länge des Publish-RPC.
- Für Abos Gleichzeitigkeitssteuerung, 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
Wenn Sie den Tracer-Anbieter instanziieren, konfigurieren Sie mit dem OpenTelemetry SDK ein Stichprobenverhältnis. Anhand dieses Verhältnisses wird festgelegt, wie viele Traces das SDK erfassen soll. Eine niedrigere Stichprobenrate kann die Abrechnungskosten senken und verhindern, dass Ihr Dienst das Cloud Trace-Zeitspanne-Kontingent überschreitet.
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
- Wenn Sie einen Nachrichten-Batch veröffentlichen, wird die RPC-Spanne für die Veröffentlichung in einem separaten Trace erfasst.
- 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 ein übergeordnetes Span haben.
Spans, die Batch-Vorgänge darstellen, z. B. publish batch (das logischerweise mehrere übergeordnete Elemente haben sollte), können nicht mit null oder einem übergeordneten Span dargestellt werden.
Während des Lebenszyklus der Nachricht erstellte Zeitspannen erfassen
Die folgende Abbildung zeigt ein Beispiel für Spans, die in einem einzelnen Trace für eine einzelne Nachricht erstellt werden.
Jede Spanne kann zusätzliche Attribute enthalten, die zusätzliche Informationen liefern, z. B. die Bytegröße der Nachricht und Informationen zum Reihenplatz.
Span-Attribute geben zusätzliche Metadaten wie den Sortierschlüssel, die Nachrichten-ID und die Größe der Nachricht an.
Die Haupt-Spans „publish“ und „subscribe“ werden um Span-Ereignisse ergänzt, die dem Zeitpunkt entsprechen, zu dem ein Netzwerkaufruf erfolgt und abgeschlossen wird.
Häufige Probleme beheben
Die folgenden Probleme können zu Problemen beim Tracing führen:
- Das Dienstkonto, das Sie zum Exportieren von Protokollen verwenden, hat nicht 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 dass die entsprechende Flush-Funktion aufgerufen wird.