Wenn Sie Ihren Anwendungscode anbieterneutral halten und gleichzeitig Telemetriedaten an Google Cloudsenden möchten, können Sie die auf dem OpenTelemetry-Collector basierenden Instrumentierungsbeispiele für Go, Java, Node.js und Python verwenden.
In diesen Beispielen wird gezeigt, wie Sie ein In-Process-OpenTelemetry SDK konfigurieren, um Messwerte, Logs und Traces an einen lokalen OpenTelemetry Collector zu exportieren, der Ihre Telemetrie an Google Cloudweiterleitet. In den Beispielen werden Messwert- und Trace-Daten im OpenTelemetry Protocol-Format (OTLP) über die Telemetry API an Ihr Google Cloud -Projekt gesendet. Logdaten werden über einen Google Cloud -Exporter gesendet.
Funktionsweise der Beispiele
In den Beispielen für Go, Java, Node.js und Python wird das OpenTelemetry-Protokoll verwendet, um Trace- und Messwertdaten zu erfassen.
In den Beispielen wird ein Logging-Framework zum Schreiben von strukturierten Logs konfiguriert und der OpenTelemetry Collector so konfiguriert, dass er aus dem stdout-Stream der Anwendung liest. Empfehlungen für Frameworks finden Sie unter Instrumentierungsansatz auswählen.
Die Anwendungen werden mit Docker erstellt und bereitgestellt. Sie müssen Docker nicht verwenden, wenn Sie eine Anwendung mit OpenTelemetry instrumentieren.
Sie können die Beispiele in Cloud Shell, auf Google Cloud-Ressourcen oder in einer lokalen Entwicklungsumgebung ausführen.
Detailanalyse
In den Beispielen wird der OpenTelemetry Collector als Sidecar verwendet, um die Telemetrie der Anwendung zu empfangen und anzureichern. Ein Exporteur sendet sie dann an Ihr Google Cloud -Projekt. Die Beispielanwendungen senden Messwert- und Trace-Daten über die Telemetry API, die das OTLP-Format unterstützt, an Ihr Projekt.
In den Beispielen wird Folgendes gezeigt:
Konfigurieren Sie OpenTelemetry so, dass Messwerte und Traces mit dem OpenTelemetry Collector erfasst werden.
Die Komplexität dieses Schritts ist sprachabhängig. In Go aktualisieren Sie beispielsweise die Funktion
main, um die Erfassung von Telemetriedaten zu initialisieren und den HTTP-Server und -Client zu konfigurieren.Konfigurieren Sie ein Logging-Framework, um strukturierte Logs zu schreiben.
Wir empfehlen, dass Ihre Anwendungen strukturierte Logs schreiben, bei denen die Log-Nutzlast als JSON-Objekt formatiert wird. Für diese Logs können Sie Abfragen erstellen, mit denen Sie nach bestimmten JSON-Pfaden suchen, und bestimmte Felder in der Lognutzlast indexieren.
Einige Dienste wie Google Kubernetes Engine haben integrierte Agents, die strukturierte Logs erfassen und an Ihr Google Cloud -Projekt senden. Für andere Dienste wie Compute Engine müssen Sie einen Agent installieren, der Ihre Logs erfasst und sendet. Weitere Informationen zu den von Ihnen installierten Agents finden Sie unter Ops-Agent – Übersicht.
Sie müssen keine Agents installieren, um diese Beispiele zu verwenden.
Konfigurieren Sie Docker-Dateien. Alle Beispiele enthalten die folgenden YAML-Dateien:
docker-compose.yaml: Konfiguriert die Dienste für die Anwendung, den OpenTelemetry Collector und einen Load Generator. Der Dienst für den OpenTelemetry Collector,otelcol, gibt beispielsweise ein Image, ein Volume und Umgebungsvariablen an. Der Endpunkt für den OpenTelemetry Collector wird durch die UmgebungsvariableOTEL_EXPORTER_OTLP_ENDPOINTfestgelegt, die im Dienstappangegeben ist.otel-collector-config.yaml: Konfiguriert den OpenTelemetry Collector:In den Beispielen wird der
otlp-Empfänger für Messwert- und Trace-Daten und derfilelog-Empfänger für Logdaten verwendet.In den Beispielen wird der
otlphttp-Exporter für Messwert- und Trace-Daten und der Google Cloud -Exporter für Logdaten verwendet.Der
otlphttp-Exporter sendet Daten mithilfe der Telemetry API an Ihr Projekt. Diese API unterstützt OTLP. Der Google Cloud Exporter konvertiert Ihre Logdaten in ein Format, das mit der Cloud Logging API kompatibel ist, und sendet die transformierten Daten dann an IhrGoogle Cloud -Projekt.
docker-compose.creds.yaml: Mit dieser Datei wird optional eine Google Cloud-Datei mit Anmeldedaten imotelcol-Container bereitgestellt. Sie benötigen diese Datei, wenn Sie ein Beispiel auf einem lokalen Computer ausführen, auf dem Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) nur als Datei verfügbar sind.
Erforderliche Berechtigungen
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie benötigen, damit die Beispielanwendungen Log-, Messwert- und Tracedaten schreiben können:
- Log-Autor (
roles/logging.logWriter) für Ihr Projekt - Monitoring-Messwert-Autor (
roles/monitoring.metricWriter) für Ihr Projekt - Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter) für Ihr Projekt - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) für Ihr Kontingentprojekt
Diese Berechtigungen sind ausreichend, wenn Sie das Beispiel in Cloud Shell, auf Google Cloud -Ressourcen oder in einer lokalen Entwicklungsumgebung ausführen. Informationen zum Konfigurieren eines Kontingentprojekts finden Sie unter Kontingentprojekt festlegen.
- Log-Autor (
-
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:
- Loganzeige (
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.
- Loganzeige (
Erforderliche APIs
Aktivieren Sie die APIs Cloud Logging, Cloud Monitoring, Cloud Trace und Telemetry, falls sie noch nicht aktiviert sind:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen
gcloud services enable logging.googleapis.commonitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com
Alternative Instrumentierungsansätze
Möglicherweise interessieren Sie sich für andere Beispiele, die verschiedene Konfigurationen veranschaulichen:
Unter Vom Trace-Exporter zum OTLP-Endpunkt migrieren wird beschrieben, wie Sie die In-Process-Instrumentierung verwenden, um Tracedaten direkt an Ihr Google Cloud -Projekt zu senden.
Wir empfehlen, einen OpenTelemetry-Collector zu verwenden, um Ihre Telemetriedaten zu exportieren, wenn Ihre Umgebung die Verwendung eines Collectors unterstützt. Wenn Sie keinen Collector verwenden können, müssen Sie einen In-Process-Exporter verwenden, der Daten direkt an Ihr Google Cloud -Projekt sendet.
Im Artikel Messwerte und Traces mithilfe von Exemplars korrelieren wird beschrieben, wie Sie eine Go-Anwendung so konfigurieren, dass Exemplars generiert werden. Ein Beispiel ist ein Beispieldatenpunkt, der an einen Messwertdatenpunkt angehängt ist. Mit Beispielen können Sie Ihre Trace- und Messwertdaten korrelieren.
Ops-Agent und OpenTelemetry Protocol (OTLP) verwenden: Hier wird beschrieben, wie Sie den Ops-Agent und einen OTLP-Empfänger konfigurieren, um Messwerte und Traces aus einer Anwendung zu erfassen.
Nächste Schritte
Weitere Informationen zu Collectors finden Sie unter Google-Built OpenTelemetry Collector.
Beispiele für Collector-basierte Exporte ansehen