In diesem Dokument wird beschrieben, wie Sie den In-Process-Export von Tracedaten durch das OpenTelemetry SDK in Ihr Google Cloud -Projekt konfigurieren. Die Beispiele für Java, Go, Python und Node.js zeigen, wie Sie das SDK so konfigurieren, dass Tracedaten an die Telemetry API (OTLP) gesendet werden, wenn Sie die manuelle Instrumentierung verwenden. Auf der Seite finden Sie für jede Sprache Informationen zur Verwendung von OTLP-Exportern zum Senden von Tracedaten über die unterstützten Exportprotokolle.
Die auf dieser Seite beschriebene Instrumentierung gilt nur für Tracedaten. Es werden keine Log- oder Messwertdaten an Ihr Google Cloud -Projekt gesendet.
Wenn Ihre Anwendung auf einen OpenTelemetry-Collector angewiesen ist, um Trace-Daten an Ihr Google Cloud -Projekt zu senden, gilt dieses Dokument nicht:
- Beispiele für die Instrumentierung finden Sie unter Beispiele für die Collector-basierte Instrumentierung.
- Informationen zu Collectors finden Sie unter Von Google entwickelter OpenTelemetry Collector.
Gründe für die Migration
Die OpenTelemetry SDKs generieren Log-, Messwert- und Tracedaten in einem Format, das im Allgemeinen mit den von OpenTelemetry OTLP Protocol definierten Protobuf-Dateien übereinstimmt. Felder können jedoch vor der Speicherung von einem OpenTelemetry-spezifischen Datentyp in einen JSON-Datentyp konvertiert werden.
Wenn eine Anwendung diese Daten mithilfe eines Google Cloud -Exporters in ein Google Cloud -Projekt exportiert, führt dieser Exporter die folgenden Schritte aus:
- Wandelt die aufgezeichneten Daten aus dem OTLP-Format in ein proprietäres Format um, das von der Cloud Logging API, der Cloud Monitoring API oder der Cloud Trace API definiert wird.
- Die transformierten Daten werden an die entsprechende API gesendet und dann in Ihrem Google Cloud -Projekt gespeichert.
Für Trace-Daten empfehlen wir, Ihre Anwendung für den Export von Daten zur Verwendung der Telemetry (OTLP) API zu migrieren, da für diesen Export keine Datentransformation erforderlich ist. Bei der Datentransformation können einige Daten verloren gehen. Beispielsweise kann das proprietäre Format niedrigere Grenzwerte für bestimmte Felder haben oder einige OTLP-Felder werden nicht einem Feld im proprietären Format zugeordnet.
Verfügbare Stichproben
Die auf dieser Seite erwähnten Beispielanwendungen sind auf GitHub verfügbar. Die meisten Anwendungen sind so konfiguriert, dass sie Tracedaten über gRPC exportieren. Das bedeutet, dass sie protobuf-codierte Daten im gRPC-Wire-Format über HTTP/2-Verbindungen verwenden. Außerdem wird Beispielcode für Anwendungen bereitgestellt, die so konfiguriert sind, dass sie Tracedaten als protobuf-codierte Daten über HTTP-Verbindungen exportieren:
-
Die Beispielanwendung ist so konfiguriert, dass Traces als protobuf-codierte Daten über HTTP-Verbindungen exportiert werden. Wenn Sie gRPC verwenden möchten, ist die Instrumentierung in diesem Beispiel anwendbar. Sie müssen jedoch die Systemeigenschaften ändern, die vom Modul für die automatische Konfiguration verwendet werden. In der Beispielanwendung wird der
http/protobuf-Exporter angegeben. Wenn Sie gRPC verwenden möchten, ändern Sie diese Einstellung ingrpc.Wir empfehlen, dass Ihre Java-Anwendungen, wie die Beispielanwendung, das OpenTelemetry SDK Autoconfigure-Modul verwenden, um das SDK zu konfigurieren.
Go-Anwendung, die gRPC verwendet und Go-Anwendung, die HTTP verwendet
Es gibt zwei Go-Repositories. In einem Repository verwendet die Beispielanwendung gRPC. Im Beispiel im anderen Repository werden protobuf-codierte Daten über HTTP-Verbindungen verwendet.
-
Dieses Repository enthält zwei Beispiele: eines für gRPC und eines, das protobuf-codierte Daten über HTTP-Verbindungen verwendet.
-
Dieses Repository enthält zwei Beispiele: eines für gRPC und eines, das protobuf-codierte Daten über HTTP-Verbindungen verwendet.
Hinweise
Bevor Sie Ihre Anwendung migrieren, um Tracedaten an den OTLP-Endpunkt zu senden, müssen Sie die Telemetry API aktivieren und dafür sorgen, dass Ihnen die erforderlichen IAM-Rollen (Identity and Access Management) zugewiesen wurden. Möglicherweise müssen Sie einem Dienstkonto auch IAM-Rollen zuweisen.
Abrechnung und Telemetry API aktivieren
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Telemetry, Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Telemetry, Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. Weisen Sie dem Dienstkonto, das von Ihrer Anwendung verwendet wird, die folgenden IAM-Rollen zu:
- Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter) - Log-Autor (
roles/logging.logWriter) | - Monitoring-Messwert-Autor (
roles/monitoring.metricWriter)
Weitere Informationen zu Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) finden Sie unter Funktionsweise von Standardanmeldedaten für Anwendungen und Standardanmeldedaten für Anwendungen (ADC) für eine lokale Entwicklungsumgebung einrichten.
- Cloud Telemetry Traces Writer (
-
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.
-
Logbetrachter (
Fügen Sie die folgenden Importanweisungen hinzu:
Aktualisieren Sie den Anwendungscode, um das OpenTelemetry SDK Autoconfigure-Modul zum Konfigurieren des SDK zu verwenden:
Konfigurieren Sie die Systemeigenschaften, die vom Modul für die automatische Konfiguration zur Laufzeit verwendet werden. In diesem Modul werden diese Attribute verwendet, um das SDK zu starten. Sie können auch Umgebungsvariablen anstelle von Systemeigenschaften verwenden. Weitere Informationen finden Sie unter Umgebungsvariablen und Systemattribute.
In der Beispielanwendung werden die Systemattribute im
build.gradle-Script definiert:Übergeben Sie die Konfiguration auch als JVM-Argumente:
Wenn Sie Tracedaten lieber mit gRPC exportieren möchten, legen Sie das OTLP-Protokoll auf
grpcanstatt aufhttp/protobuffest.- Authentifizierungsheader für die Exportaufrufe konfigurieren
- Konfigurieren Sie die erforderlichen OpenTelemetry-Ressourcenattribute und OTLP-Header.
- Exporter-Endpunkt konfigurieren
Berechtigungen konfigurieren
Migrationsanleitung für die manuelle Instrumentierung
In diesem Abschnitt wird beschrieben, wie Sie Ihre Anwendung so ändern, dass sie Ihre Tracedaten mithilfe der Telemetry API an Ihr Google Cloud -Projekt sendet. Sie können keine Messwert- oder Logdaten an diesen Endpunkt senden.
Abhängigkeiten hinzufügen
Als Erstes müssen Sie in Ihrer Anwendung Abhängigkeiten für den OTLP-Trace-Exporter von OpenTelemetry hinzufügen. Wählen Sie die Abhängigkeitsversionen aus, die für Ihre Anwendung und Ihr Build-System geeignet sind.
Java
Fügen Sie für eine Java-Anwendung in Ihrem build.gradle-Skript die folgenden Abhängigkeiten hinzu:
Go
In diesem Abschnitt werden die Änderungen veranschaulicht, die Sie an Ihren Abhängigkeiten vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, fügen Sie das otlptracehttp-Paket als Abhängigkeit ein. Weitere Informationen finden Sie unter Go-Anwendung, die HTTP verwendet.
Aktualisieren Sie für eine Go-Anwendung, die gRPC für den Export verwendet, die Datei go.mod, um die folgende Abhängigkeit einzuschließen:
Python
In diesem Abschnitt werden die Änderungen veranschaulicht, die Sie an Ihren Abhängigkeiten vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, fügen Sie das opentelemetry-exporter-otlp-proto-http-Paket als Anforderung hinzu. Weitere Informationen finden Sie im Python-Repository.
Installieren Sie für eine Python-Anwendung, die gRPC für den Export verwendet, die folgenden Abhängigkeiten oder aktualisieren Sie die Datei requirements.txt:
Node.js
In diesem Abschnitt werden die Änderungen veranschaulicht, die Sie an Ihren Abhängigkeiten vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, müssen Sie das @opentelemetry/exporter-trace-otlp-proto-Paket als Abhängigkeit einbinden. Weitere Informationen finden Sie unter Node.js-Anwendung.
Fügen Sie für eine Node.js-Anwendung, die Tracedaten mit gRPC exportiert, die folgenden Abhängigkeiten hinzu:
"@opentelemetry/exporter-trace-otlp-grpc": "0.203.0",
"@grpc/grpc-js": "1.14.3"
Google Cloud -Exporteure durch OTLP-Exporteure ersetzen
Aktualisieren Sie Ihren Anwendungscode so, dass das OpenTelemetry SDK für die Verwendung der OpenTelemetry OTLP-Exporter anstelle des Google Cloud -Trace-Exporters konfiguriert ist. Die erforderlichen Änderungen sind sprachspezifisch.
Java
Gehen Sie für eine Java-Anwendung so vor:
Go
In diesem Abschnitt werden die Änderungen beschrieben, die Sie vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, müssen Sie das otlptracehttp-Paket importieren und den Exporter mit entsprechenden Optionen konfigurieren. Weitere Informationen finden Sie unter Go-Anwendung, die HTTP verwendet.
Fügen Sie für eine Go-Anwendung, die gRPC für den Export verwendet, die folgenden Importanweisungen hinzu:
Aktualisieren Sie außerdem den Initialisierungscode, um TraceProvider mit dem gRPC-Exporter zu konfigurieren:
Python
In diesem Abschnitt werden die Änderungen beschrieben, die Sie vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, müssen Sie das opentelemetry.exporter.otlp.proto.http-Paket importieren und den Exporter mit den entsprechenden Optionen konfigurieren. Weitere Informationen finden Sie im Python-Repository.
Fügen Sie für eine Python-Anwendung, die gRPC für den Export verwendet, die folgenden Importe hinzu:
Aktualisieren Sie außerdem den Initialisierungscode, um TraceProvider mit dem gRPC-Exporter zu konfigurieren:
Node.js
In diesem Abschnitt werden die Änderungen beschrieben, die Sie vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, importieren Sie das @opentelemetry/exporter-trace-otlp-proto-Paket.
Weitere Informationen finden Sie unter Node.js-Anwendung.
Fügen Sie für eine Node.js-Anwendung, die gRPC für den Export verwendet, die folgenden Importe hinzu:
Aktualisieren Sie außerdem den Initialisierungscode, um TraceProvider mit dem gRPC-Exporter zu konfigurieren:
Authentifizierung konfigurieren
Durch die vorherigen Änderungen an der OpenTelemetry SDK-Konfiguration ist Ihre Anwendung so konfiguriert, dass Traces mit den OpenTelemetry OTLP-Exportern über gRPC oder HTTP exportiert werden. Als Nächstes müssen Sie die Exporter so konfigurieren, dass diese Traces an Ihr Google Cloud -Projekt gesendet werden.
So konfigurieren Sie die Authentifizierung:
In diesem Abschnitt werden die einzelnen Schritte im Detail beschrieben.
Authentifizierungsheader für die Exportaufrufe konfigurieren
Wenn Sie den Exporter mit Ihren Google Cloud Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) konfigurieren möchten, fügen Sie eine sprachspezifische Google Auth Library hinzu.
Java
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Google Cloud Observability zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Für eine Java-Anwendung, die das OpenTelemetry SDK Autoconfigure-Modul verwendet, empfehlen wir, auch die Google Cloud Authentication Extension zu verwenden.
Go
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Google Cloud Observability zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Aktualisieren Sie für eine Go-Anwendung, die gRPC für den Export verwendet, die Datei go.mod, um die folgende Abhängigkeit einzuschließen:
Aktualisieren Sie für eine Go-Anwendung, die HTTP für den Export verwendet, die Datei go.mod, um die folgende Abhängigkeit einzuschließen:
Python
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Google Cloud Observability zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Fügen Sie für eine Python-Anwendung die folgenden Importe hinzu:
Node.js
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Google Cloud Observability zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Fügen Sie für eine Node.js-Anwendung die folgende Abhängigkeit hinzu:
"google-auth-library": "9.15.1"
Aktualisieren Sie als Nächstes den Anwendungscode, der den OTLP-Span-Exporter erstellt, sodass die aus der Bibliothek abgerufenen Autorisierungstokens den Headern hinzugefügt werden. Dieser Schritt ist sprachspezifisch, die Implementierung ist jedoch für alle Sprachen ähnlich.
Java
Wenn Sie eine Java-Anwendung haben, die das OpenTelemetry SDK Autoconfigure-Modul und die Google Cloud Authentication Extension verwendet, sind bei der Initialisierung Ihrer Anwendung keine besonderen Schritte erforderlich. Das Modul für die automatische Konfiguration führt automatisch die erforderlichen Schritte zum Konfigurieren von ADC aus.
Go
In diesem Abschnitt werden die Änderungen beschrieben, die Sie vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, müssen Sie das otlptracehttp-Paket importieren und den Exporter als otlptracehttp-Objekt konfigurieren. Weitere Informationen finden Sie unter Go-Anwendung, die HTTP verwendet.
Fügen Sie für eine Go-Anwendung, die gRPC für den Export verwendet, die folgenden Importanweisungen hinzu:
Aktualisieren Sie außerdem den Initialisierungscode, um ADC zu konfigurieren, bevor Sie den gRPC-Exporter instanziieren:
Python
In diesem Abschnitt werden die Änderungen beschrieben, die Sie vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, verwenden Sie die Standardanmeldedaten. Sie müssen diese Anmeldedaten auch übergeben, wenn Sie die BatchSpanProcessor instanziieren. Weitere Informationen finden Sie im Python-Repository.
Fügen Sie für eine Python-Anwendung, die gRPC für den Export verwendet, die folgenden Importe hinzu:
Aktualisieren Sie außerdem den Initialisierungscode, um ADC zu konfigurieren, bevor Sie den gRPC-Exporter instanziieren:
Node.js
In diesem Abschnitt werden die Änderungen beschrieben, die Sie vornehmen müssen, wenn Sie gRPC für den Export verwenden. Wenn Sie protobuf-codierte Daten über HTTP-Verbindungen für den Export verwenden, müssen Sie etwas andere Änderungen vornehmen als hier beschrieben.
Weitere Informationen finden Sie in der Datei app-http-proto-export.ts, die in der Node.js-Anwendung enthalten ist.
Fügen Sie für eine Node.js-Anwendung, die gRPC für den Export verwendet, die folgenden Importe hinzu:
Aktualisieren Sie außerdem den Initialisierungscode, um ADC zu konfigurieren, bevor Sie den gRPC-Exporter instanziieren:
Erforderliche OpenTelemetry-Ressourcenattribute konfigurieren
Fügen Sie der Umgebungsvariable OTEL_RESOURCE_ATTRIBUTES das Schlüssel/Wert-Paar hinzu, das Ihr Projekt angibt. Verwenden Sie für den Schlüssel gcp.project_id.
Verwenden Sie als Wert die ID Ihres Google Cloud Projekts.
Beispiel:
export OTEL_RESOURCE_ATTRIBUTES="gcp.project_id=PROJECT_ID"
Wenn Sie Java verwenden und Ihre Anwendung so konfigurieren, dass sie die Google Cloud Authentication Extension verwendet, wie in der Beispiel-Java-Anwendung, müssen Sie die Projekt-ID nicht als Teil der OpenTelemetry-Ressourcenattribute festlegen. Das Festlegen dieses Attributs ist jedoch nicht schädlich.
Weitere Informationen zu OpenTelemetry-Umgebungsvariablen finden Sie unter Allgemeine SDK-Konfiguration.
Kontingentprojekt-ID festlegen
Das Kontingentprojekt ist das Google Cloud Projekt, in dem Ihre Nutzung von API-Anfragen erfasst wird. Da die Telemetry API eine clientbasierte API ist, hängt es von der Authentifizierung ab, ob das Kontingentprojekt automatisch identifiziert wird. Wenn Sie ein Dienstkonto für die Authentifizierung verwenden, müssen Sie beispielsweise das Kontingentprojekt nicht angeben. Sie müssen das Kontingentprojekt jedoch angeben, wenn Nutzeranmeldedaten für die Authentifizierung verwendet werden.
Sie können ein Kontingentprojekt mit einer Umgebungsvariablen festlegen. Informationen dazu, welche Umgebungsvariable für Ihre Programmiersprache festgelegt werden muss, finden Sie unter Kontingentprojekt mit einer Umgebungsvariablen festlegen.
Für Go können Sie das Kontingentprojekt beispielsweise so festlegen:
export GOOGLE_CLOUD_QUOTA_PROJECT="QUOTA_PROJECT_ID"
Informationen zum Beheben von Authentifizierungsfehlern finden Sie unter Nutzeranmeldedaten funktionieren nicht.
Exporter-Endpunkt konfigurieren
Legen Sie den Wert der Umgebungsvariablen OTEL_EXPORTER_OTLP_ENDPOINT auf den OTLP-Endpunkt für Google Cloudfest.
Beispiel:
export OTEL_EXPORTER_OTLP_ENDPOINT=https://telemetry.googleapis.com
Wenn Sie Java und das Modul „autoconfigure“ verwenden, können Sie den Exporter-Endpunkt mithilfe von Systemeigenschaften festlegen, wie in der Beispiel-Java-Anwendung. Sie müssen die Umgebungsvariable des Exporters für diese Konfiguration nicht festlegen.
Weitere Informationen zu OpenTelemetry-Umgebungsvariablen finden Sie unter Allgemeine SDK-Konfiguration.