Wenn Sie einen OpenTelemetry-Collector verwenden, instrumentieren Sie Ihre Anwendung mit dem SDK und dem OTLP-In-Process-Exporter des SDKs. Diese Instrumentierung ist anbieterneutral. Außerdem stellen Sie einen OpenTelemetry Collector bereit, der Telemetriedaten vom In-Process-Exporter empfängt und diese dann in Ihr Google Cloud -Projekt exportiert. Weitere Informationen zu Collectors finden Sie unter Von Google entwickelter OpenTelemetry Collector.
Wir empfehlen, einen OpenTelemetry-Collector zu verwenden, um Ihre Telemetriedaten zu exportieren, wenn Ihre Umgebung die Verwendung eines Collectors unterstützt. In einigen Umgebungen müssen Sie einen In-Process-Exporter verwenden, der Daten direkt an IhrGoogle Cloud -Projekt sendet. Weitere Informationen zur In-Process-Instrumentierung finden Sie unter Vom Trace-Exporter zum OTLP-Endpunkt migrieren.
Weitere Informationen zur Instrumentierung finden Sie in den folgenden Dokumenten:
Manuelle und Zero-Code-Instrumentierung
Für diese Sprache definiert OpenTelemetry die Zero-Code-Instrumentierung als das Erfassen von Telemetriedaten aus Bibliotheken und Frameworks, ohne Codeänderungen vorzunehmen. Sie müssen jedoch Module installieren und Umgebungsvariablen festlegen.
In diesem Dokument wird die Instrumentierung ohne Code nicht beschrieben. Weitere Informationen zu diesem Thema finden Sie unter Python-Instrumentierung ohne Code.
Allgemeine Informationen finden Sie unter OpenTelemetry-Instrumentierung für Python.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch 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.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud -Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud -Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
Aktivieren Sie die APIs Cloud Logging, Cloud Monitoring, Cloud Trace und Telemetry:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud services enable logging.googleapis.com
monitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud -Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud -Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
Aktivieren Sie die APIs Cloud Logging, Cloud Monitoring, Cloud Trace und Telemetry:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud services enable logging.googleapis.com
monitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com Wenn Sie das Beispiel in Cloud Shell, auf Google Cloud-Ressourcen oder in einer lokalen Entwicklungsumgebung ausführen, reichen die in diesem Abschnitt aufgeführten Berechtigungen aus. Bei Produktionsanwendungen werden die Anmeldedaten zum Schreiben von Log-, Messwert- und Tracedaten in der Regel von einem Dienstkonto bereitgestellt.
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie benötigen, damit die Beispielanwendung Log-, Messwert- und Tracedaten schreiben kann:
-
Log-Autor (
roles/logging.logWriter) -
Monitoring-Messwert-Autor (
roles/monitoring.metricWriter) -
Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter)
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen Ihrer Log-, Messwert- und Tracedaten benötigen:
-
Logbetrachter (
roles/logging.viewer) -
Monitoring Viewer (
roles/monitoring.viewer) -
Cloud Trace User (
roles/cloudtrace.user)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
Log-Autor (
Anwendung für die Erfassung von Traces, Messwerten und Logs instrumentieren
Führen Sie die folgenden Schritte aus, um Ihre Anwendung so zu instrumentieren, dass Trace- und Messwertdaten erfasst und strukturiertes JSON in die Standardausgabe geschrieben wird, wie in den folgenden Abschnitten dieses Dokuments beschrieben:
OpenTelemetry konfigurieren
Diese Beispielanwendung ist so konfiguriert, dass Traces und Messwerte mithilfe des OTLP-Protokolls exportiert werden. Standardmäßig verwendet das OpenTelemetry Python SDK das Format W3C Trace Context zur Weitergabe von Trace-Kontext. Dadurch wird sichergestellt, dass Spans die richtige hierarchische Beziehung in einem Trace haben.
Das folgende Codebeispiel zeigt ein Python-Modul zum Einrichten von OpenTelemetry. Wenn Sie das vollständige Beispiel sehen möchten, klicken Sie auf more_vert Mehr und wählen Sie dann Auf GitHub ansehen aus.
Die Flask-App verwendet Gunicorn, um HTTP-Anfragen gemäß den Empfehlungen im Leitfaden zur Bereitstellung in der Produktion von Flask zu verarbeiten.
Gunicorn startet mehrere Kopien Ihrer App, die in unabhängigen Worker-Prozessen ausgeführt werden, um den Durchsatz zu erhöhen. Damit sich die Messwerte aus den Worker-Prozessen nicht gegenseitig beeinträchtigen, empfehlen wir, dass jeder Worker-Prozess einen eindeutigen Wert für das Ressourcenattribut service.instance.id festlegt. Eine Möglichkeit dazu ist, die Prozess-ID in service.instance.id aufzunehmen. Weitere Informationen finden Sie unter Zeitreihenkollisionen.
Weitere Informationen und Konfigurationsoptionen finden Sie unter OpenTelemetry-Python-Instrumentierung.
Strukturiertes Logging konfigurieren
Wenn Sie strukturierte Logs schreiben möchten, die mit Traces verknüpft sind, konfigurieren Sie Ihre App so, dass JSON-formatierte Logs mit Schlüsseln, die Trace-Informationen enthalten, in die Standardausgabe geschrieben werden. Das folgende Codebeispiel zeigt, wie Sie die Standardbibliothek logging für die Ausgabe strukturierter JSON-Logs mit der Bibliothek python-json-logger konfigurieren und wie Sie das Paket opentelemetry-instrumentation-logging verwenden, um Trace-Informationen einzufügen.
Die vorherige Konfiguration extrahiert Informationen zum aktiven Span aus der Lognachricht und fügt diese Informationen dann als Attribute dem strukturierten JSON-Log hinzu. Mit diesen Attributen können Sie dann ein Log mit einem Trace korrelieren:
logging.googleapis.com/trace: Der Ressourcenname des Trace, das mit dem Logeintrag verknüpft ist.logging.googleapis.com/spanId: Die Span-ID mit dem Trace, das dem Logeintrag zugeordnet ist.logging.googleapis.com/trace_sampled: Der Wert dieses Felds musstrueoderfalsesein.
Weitere Informationen zu diesen Feldern finden Sie in der LogEntry-Struktur.
Beispielanwendung ausführen, die für die Erfassung von Telemetriedaten konfiguriert ist
Die Instrumentierung in der Beispielanwendung verwendet anbieterneutrale Formate wie JSON für Logdaten und OTLP für Messwert- und Trace-Daten. Die Beispielanwendung verwendet auch Flask, um HTTP-Anfragen zu verarbeiten, und die requests-Bibliothek, um HTTP-Anfragen zu stellen. Der OpenTelemetry-Collector sendet Log- und Messwertdaten mithilfe von Google-Exportern an Ihr Projekt. Die Tracedaten werden mit der Telemetry API, die OTLP verwendet, an Ihr Projekt gesendet.
Um Messwerte und Traces für den HTTP-Client und -Server zu generieren, werden in der Beispiel-App die Instrumentierungsbibliotheken opentelemetry-instrumentation-flask und opentelemetry-instrumentation-requests installiert:
Die Anwendung hat zwei Endpunkte:
Der
/multi-Endpunkt wird von dermulti-Funktion verarbeitet. Der Lastgenerator in der Anwendung gibt Anfragen an den Endpunkt/multiaus. Wenn dieser Endpunkt eine Anfrage empfängt, sendet er zwischen drei und sieben Anfragen an den Endpunkt/singleauf dem lokalen Server.Der
/single-Endpunkt wird von dersingle-Funktion verarbeitet. Wenn dieser Endpunkt eine Anfrage empfängt, wechselt er für eine kurze Verzögerung in den Ruhemodus und antwortet dann mit einem String.
Anwendung herunterladen und bereitstellen
So führen Sie das Beispiel aus:
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Klonen Sie das Repository:
git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-pythonGehen Sie zum Beispielverzeichnis:
cd opentelemetry-operations-python/samples/instrumentation-quickstartErstellen Sie das Beispiel und führen Sie es aus:
docker compose up --abort-on-container-exitWenn Sie Cloud Shell nicht ausführen, führen Sie die Anwendung mit der Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALSaus, die auf eine Datei mit Anmeldedaten verweist. Standardanmeldedaten für Anwendungen stellt eine Datei mit Anmeldedaten unter$HOME/.config/gcloud/application_default_credentials.jsonbereit.# Set environment variables export GOOGLE_CLOUD_PROJECT="PROJECT_ID" export GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcloud/application_default_credentials.json" export USERID="$(id -u)" # Run docker compose -f docker-compose.yaml -f docker-compose.creds.yaml up --abort-on-container-exit
Messwerte ansehen
Die OpenTelemetry-Instrumentierung in der Beispielanwendung generiert Prometheus-Messwerte, die Sie mit dem Metrics Explorer aufrufen können:
Prometheus/http_server_duration_milliseconds/histogramzeichnet die Dauer von Serveranfragen auf und speichert die Ergebnisse in einem Histogramm.Prometheus/http_client_duration_milliseconds/histogramzeichnet die Dauer von Clientanfragen auf und speichert die Ergebnisse in einem Histogramm.
-
Rufen Sie in der Google Cloud Console das leaderboard auf der Seite des Metrics Explorer auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Wählen Sie in der Symbolleiste der Google Cloud Console Ihr Projekt von Google Cloud aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten Ordners aus.
- Maximieren Sie im Element Messwert das Menü Messwert auswählen, geben Sie
http_serverin die Filterleiste ein und wählen Sie dann über die Untermenüs einen bestimmten Ressourcentyp und Messwert aus:- Wählen Sie im Menü Aktive Ressourcen die Option Prometheus-Ziel aus.
- Wählen Sie im Menü Aktive Messwertkategorien die Option Http aus.
- Wählen Sie im Menü Aktive Messwerte einen Messwert aus.
- Klicken Sie auf Übernehmen.
Verwenden Sie das Element Filter, um Filter hinzuzufügen, mit denen Zeitreihen aus den Abfrageergebnissen entfernt werden.
- Konfigurieren Sie, wie die Daten angezeigt werden.
Wenn die Messungen für einen Messwert kumulativ sind, normalisiert Metrics Explorer die gemessenen Daten automatisch nach dem Ausrichtungszeitraum. Dadurch wird im Diagramm eine Rate angezeigt. Weitere Informationen finden Sie unter Arten, Typen und Umwandlungen.
Wenn ganzzahlige oder doppelte Werte gemessen werden, z. B. mit den beiden
counter-Messwerten, summiert der Metrics Explorer automatisch alle Zeitachsen. Wenn Sie die Daten für die HTTP-Routen/multiund/singleaufrufen möchten, legen Sie im ersten Menü des Eintrags Aggregation die Option Keine fest.Weitere Informationen zum Konfigurieren eines Diagramms finden Sie unter Messwerte bei Verwendung von Metrics Explorer auswählen.
Traces ansehen
Es kann einige Minuten dauern, bis Ihre Tracedaten verfügbar sind. Wenn beispielsweise Trace-Daten in Ihrem Projekt eingehen, muss Google Cloud Observability möglicherweise eine Datenbank zum Speichern dieser Daten erstellen. Das Erstellen der Datenbank kann einige Minuten dauern. In dieser Zeit sind keine Tracedaten verfügbar.
So rufen Sie Ihre Trace-Daten auf:
-
Rufen Sie in der Google Cloud Console die Seite
Trace Explorer auf:
Sie können diese Seite auch über die Suchleiste finden.
- Wählen Sie im Tabellenbereich der Seite eine Zeile mit dem Spannen-Namen
/multiaus. Wählen Sie im Gantt-Diagramm im Bereich Trace-Details den Span mit der Bezeichnung
/multiaus.Ein Steuerfeld mit Informationen zur HTTP-Anfrage wird geöffnet. Zu diesen Details gehören die Methode, der Statuscode, die Anzahl der Byte und der User-Agent des Aufrufers.
Wählen Sie den Tab Logs und Ereignisse aus, um die mit diesem Trace verknüpften Logs aufzurufen.
Auf dem Tab werden einzelne Logs angezeigt. Maximieren Sie den Logeintrag, um die Details anzusehen. Sie können auch auf Logs ansehen klicken und das Log mit dem Log-Explorer aufrufen.
Weitere Informationen zur Verwendung von Cloud Trace-Explorer finden Sie unter Traces suchen und untersuchen.
Logs ansehen
Im Log-Explorer können Sie Ihre Logs prüfen und sich auch die zugehörigen Traces ansehen, sofern vorhanden.
-
Rufen Sie in der Google Cloud Console das und die Seite Log-Explorer auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
Suchen Sie ein Log mit der Beschreibung
handle /multi request.Erweitern Sie den Logeintrag, um die Details des Logs aufzurufen.
Klicken Sie auf
Traces für einen Logeintrag mit der Nachricht "handle /multi request" und wählen Sie dann Trace-Details anzeigen aus.Der Bereich Trace-Details wird geöffnet und zeigt den ausgewählten Trace an.
Ihre Protokolldaten sind möglicherweise einige Minuten vor Ihren Tracedaten verfügbar. Wenn beim Aufrufen von Trace-Daten ein Fehler auftritt, entweder durch Suchen nach einem Trace anhand der ID oder durch Ausführen der Schritte in dieser Aufgabe, warten Sie ein bis zwei Minuten und versuchen Sie es noch einmal.
Weitere Informationen zur Verwendung des Log-Explorers finden Sie unter Logs mit dem Log-Explorer ansehen.
Nächste Schritte
- OpenTelemetry
- OTLP-Spezifikation
- Strukturiertes Logging
- Fehlerbehebung für Managed Service for Prometheus
- Fehlerbehebung für Cloud Trace