Diese Seite richtet sich an Anwendungsentwickler, die Cloud Trace-Daten für Python-Anwendungen mithilfe von OpenTelemetry erfassen möchten. OpenTelemetry bietet eine Reihe von Instrumentierungsbibliotheken zum Erfassen von Trace- und Messwertdaten. Diese Bibliotheken funktionieren mit mehreren Back-Ends. So erfassen Sie Traces mit OpenTelemetry und Python, wie auf dieser Seite beschrieben:
- Installieren Sie die OpenTelemetry-Pakete.
- Anwendung für den Export von Spans nach Cloud Trace konfigurieren
- Konfigurieren Sie Ihre Plattform.
Releaseinformationen finden Sie hier:
Weitere Informationen zu OpenTelemetry-Referenzinhalten finden Sie hier:
Aktuelle Informationen zu OpenTelemetry für Python sowie zusätzliche Dokumentation und Beispiele finden Sie unter OpenTelemetry.
Hinweise
- Sie müssen Python 3.6 oder höher verwenden.
-
Wählen Sie in der Google Cloud Console APIs und Dienste aus, klicken Sie auf APIs und Dienste aktivieren und aktivieren Sie dann die Cloud Trace API oder klicken Sie auf die folgende Schaltfläche:
Wenn API aktiviert angezeigt wird, ist die API bereits aktiviert. Falls nicht, klicken Sie auf die Schaltfläche Aktivieren.
OpenTelemetry-Pakete installieren
So installieren Sie die erforderlichen OpenTelemetry-Pakete:
(Optional) Führen Sie ein Upgrade auf die neueste Version von
pip
durch:pip install --upgrade pip
Installieren Sie die folgenden OpenTelemetry-Pakete mit
pip
:pip install opentelemetry-api \ opentelemetry-sdk \ opentelemetry-exporter-gcp-trace
Trace-Pakete importieren
Aktualisieren Sie Ihre Anwendung und importieren Sie die folgenden Pakete und Klassen:
trace
CloudTraceSpanExporter
TracerProvider
BatchSpanProcessor
, ein Export-Span-Prozessor, der Spans mithilfe eines Hintergrundprozesses sendet.(Optional) Wenn Sie Spans verknüpfen möchten, importieren Sie die Klasse
Link
Das folgende Beispiel veranschaulicht diese Importanweisungen:
Export von Spans nach Cloud Trace konfigurieren
Wenn Sie Spans an Cloud Trace senden möchten, ändern Sie Ihre Anwendung so, dass sie den Exporter CloudTraceSpanExporter
verwendet. Das folgende Beispiel veranschaulicht die erforderlichen Schritte:
Attribute zu einem Span hinzufügen
Rufen Sie die Methode set_attribute
des Spans auf, um einem Span ein Attribut hinzuzufügen.
Der folgende Code fügt beispielsweise mehrere Attribute zum Span mit dem Namen foo_with_attribute
hinzu:
Ereignisse zu einem Span hinzufügen
Rufen Sie die Methode add_event
des Spans auf, um ein Ereignis zu einem Span hinzuzufügen.
Der folgende Code fügt beispielsweise dem Span ein Ereignis hinzu.foo_with_event
:
Spans verknüpfen
Wenn Sie zwei Spans verknüpfen möchten, importieren Sie die Link
-Klasse und verwenden Sie dann das links
-Feld in der Methode start_as_current_span
. Wenn Sie zwei Spans verknüpfen, können Sie Attribute in das Feld links
aufnehmen.
Der folgende Code zeigt zwei verschiedene Möglichkeiten, wie Sie einen Span mit dem Span namens link_target
verknüpfen können:
Beispiel-Flask-Anwendung
Die Flask-Instrumentierung von OpenTelemetry soll die Erfassung von Trace-Inhalten im Zusammenhang mit HTTP-Anfragen vereinfachen. Dies bedeutet, dass Sie Ihren Routen für diese Anfragen keine bestimmte Instrumentierung hinzufügen müssen:
- Flask verwendet den konfigurierten Propagator, um den Span-Kontext aus den eingehenden HTTP-Anfragen zu extrahieren.
- Flask erstellt automatisch Spans mit Attributen, die die Anfrage und die Antwort beschreiben.
Ein End-to-End-Beispiel mit Flask und OpenTelemetry finden Sie unter flask_e2e. Die Git-README-Datei enthält Informationen zum Installieren, Konfigurieren und Ausführen des Beispiels.
In diesem Abschnitt werden Flask-spezifische Konfigurationsschritte hervorgehoben, die in der Datei server.py
des Beispiels enthalten sind. Die Client-Datei client.py
verwendet die Instrumentierung Requests
, um das Tracing von HTTP-Anfragen durch die Bibliothek requests zu ermöglichen.
Import und Konfiguration
Zur Verwendung der Flask-Instrumentierung von OpenTelemetry müssen Sie den FlaskInstrumentor
importieren.
Wenn Sie dafür sorgen möchten, dass Spans, die von verschiedenen Google Cloud-Produkten erstellt wurden, demselben Trace zugeordnet werden, müssen Sie den Propagator mit dem Cloud Trace-Propagator konfigurieren. Dieser Propagator gibt die Verwendung des Headers X-Cloud-Trace-Context
an. Wenn Sie keinen Propagator konfigurieren, verwendet OpenTelemetry den Standardpropagator. In diesem Fall befinden sich Spans, die von verschiedenen Google Cloud-Produkten wie Cloud Run und App Engine erstellt wurden, in separaten Traces.
Im folgenden Beispiel werden die erforderlichen Import- und Konfigurationsanweisungen sowie die Konfiguration des Cloud Trace-Propagator veranschaulicht:
Sie müssen keine Flask-spezifischen Anweisungen hinzufügen, wenn Sie den CloudTraceSpanExporter
-Exporter konfigurieren. Die unter Export von Spans nach Cloud Trace konfigurieren angezeigte Konfiguration ist ausreichend.
Flask initialisieren
Konfigurieren Sie FlaskInstrumentor
, um Ihre Anwendung zu instrumentieren.
Das folgende Beispiel zeigt, wie dieser Schritt ausgeführt wird:
Plattform konfigurieren
Sie können Cloud Trace in Google Cloud und auf anderen Plattformen verwenden.
In Google Cloud ausführen
Wenn Ihre Anwendung in Google Cloud ausgeführt wird, müssen Sie für die Clientbibliothek keine Anmeldedaten zur Authentifizierung in der Clientbibliothek angeben. Für die Google Cloud Platform muss jedoch der Zugriffsbereich der Cloud Trace API aktiviert sein.
Eine Liste der unterstützten Google Cloud-Umgebungen finden Sie unter Umgebungsunterstützung.
Für die folgenden Konfigurationen wird die Cloud Trace API über die Standardeinstellungen für den Zugriffsbereich aktiviert:
- Flexible App Engine-Umgebung
App Engine-Standardumgebung
Google Kubernetes Engine (GKE)
Compute Engine
Cloud Run
Wenn Sie benutzerdefinierte Zugriffsbereiche verwenden, muss der Zugriffsbereich der Cloud Trace API aktiviert sein:
Informationen zum Konfigurieren der Zugriffsbereiche für Ihre Umgebung mit der Google Cloud Console finden Sie unter Google Cloud-Projekt konfigurieren.
Geben Sie für
gcloud
-Nutzer mithilfe des Flags--scopes
Zugriffsbereiche an und beziehen Sie den Zugriffsbereich der Cloud Trace APItrace.append
ein. So erstellen Sie beispielsweise einen GKE-Cluster, für den nur die Cloud Trace API aktiviert ist:gcloud container clusters create example-cluster-name --scopes=https://www.googleapis.com/auth/trace.append
Lokal und extern ausführen
Wenn Ihre Anwendung außerhalb von Google Cloud ausgeführt wird, müssen Sie Anmeldedaten zur Authentifizierung in Form eines Dienstkontos für die Clientbibliothek angeben. Das Dienstkonto muss die Rolle "Cloud Trace-Agent" enthalten. Informationen dazu finden Sie unter Dienstkonto erstellen.
Google Cloud-Clientbibliotheken verwenden Standardanmeldedaten für Anwendungen für die Suche nach den Anmeldedaten Ihrer Anwendung.
Sie haben drei Möglichkeiten, diese Anmeldedaten anzugeben:
Führen Sie
gcloud auth application-default login
ausLegen Sie das Dienstkonto in einem Standardpfad für Ihr Betriebssystem fest. Im Folgenden sind die Standardpfade für Windows und Linux aufgeführt:
Windows:
%APPDATA%/gcloud/application_default_credentials.json
Linux:
$HOME/.config/gcloud/application_default_credentials.json
Legen Sie für die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
den Pfad zu Ihrem Dienstkonto fest:
Linux/macOS
export GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key
PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="path-to-your-service-accounts-private-key"
Traces ansehen
Wählen Sie in der Google Cloud Console Trace und dann Übersicht aus. Sie können auch auf die folgende Schaltfläche klicken:
Fehlerbehebung
Informationen zur Fehlerbehebung bei Cloud Trace finden Sie auf der Seite Fehlerbehebung.
Ressourcen
- https://opentelemetry.io/
- OpenTelemetry/opentelemetry-python GitHub-Repository
- Google Cloud opentelemetry-operations-python GitHub-Repository