Übersicht über Beispiele für die collectorbasierte Instrumentierung

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:

  1. 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.

  2. 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.

  3. 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 Umgebungsvariable OTEL_EXPORTER_OTLP_ENDPOINT festgelegt, die im Dienst app angegeben ist.

    • otel-collector-config.yaml: Konfiguriert den OpenTelemetry Collector:

      • In den Beispielen wird der otlp-Empfänger für Messwert- und Trace-Daten und der filelog-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 im otelcol-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:

    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.

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.com monitoring.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