Exportieren von OpenTelemetry-Daten in Datadog in Azure Container Apps

In diesem Handbuch wird gezeigt, wie Sie Azure Container Apps so konfigurieren, dass Protokolle, Ablaufverfolgungen und Metriken mithilfe des verwalteten OpenTelemetry-Agents an Datadog weitergeleitet werden.

Weitere Informationen zum verwalteten OpenTelemetry-Agent finden Sie unter Set up OpenTelemetry agents in Azure Container Apps.

Was Sie lernen

  • Erstellen Sie einen Datadog-API-Schlüssel für die Telemetrieerfassung.
  • Konfigurieren Sie ein Datadog-Ziel in Ihrer Container-Apps-Umgebung mithilfe von Bicep, Azure CLI oder dem Azure-Portal.
  • Wenden Sie Konfigurationsupdates auf Ihre vorhandene Container-Apps-Umgebung und -App an.
  • Telemetriedaten in Datadog überprüfen.

Voraussetzungen

  • Ein Azure-Abonnement, in dem Sie Ressourcengruppen erstellen und Azure Container Apps Ressourcen bereitstellen können.
  • Eine Datadog-Umgebung und ein API-Schlüssel.
  • Azure CLI installiert und angemeldet.
  • Azure Container Apps CLI-Erweiterung installiert.
az extension add --name containerapp --upgrade

Erstellen eines Datadog-API-Schlüssels

Erstellen Sie einen Datadog-API-Schlüssel mit Berechtigungen, mit denen Telemetriedaten aufgenommen werden können.

Sie benötigen die folgenden Datadog-Werte für die verwaltete OTel-Konfiguration von Container-Apps:

  • site (vollständiger Wert der Datadog-Website, zum Beispiel: datadoghq.com, us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu)
  • key (Datadog-API-Schlüssel)

Informationen zur Erstellung und Verwaltung von Datadog-Schlüsseln finden Sie unter Datadog-API und Anwendungsschlüssel.

Konfigurieren von OpenTelemetry-Zielen

Verwenden Sie eine der folgenden Optionen, um Datadog als OpenTelemetry-Ziel in Ihrer Container-Apps-Umgebung zu konfigurieren.

Important

Das Konfigurieren eines verwalteten OpenTelemetry-Ziels erzeugt nicht automatisch Telemetrie. Ihre Anwendung muss außerdem mit einem OpenTelemetry-SDK instrumentiert werden, um Ablaufverfolgungsdaten, Metriken und Protokolle auszugeben.

Festlegen von CLI-Variablen für den Bereitstellungsbefehl:

$RESOURCE_GROUP = "<resource-group-name>"
$DATADOG_SITE = "<datadog-site>" # Example: us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu
$DATADOG_API_KEY = ""
$IMAGE = ""
$ACR_USERNAME = ""
$ACR_PASSWORD = ""

Verwenden Sie einen Ressourcenblock für verwaltete Umgebungen wie das folgende Beispiel:

param datadogSite string
@secure()
param datadogApiKey string

var datadogDestinationName = 'dataDog'

resource environment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = {
  name: ''
  location: ''
  properties: {
    openTelemetryConfiguration: {
      destinationsConfiguration: {
        dataDogConfiguration: {
          site: datadogSite
          key: datadogApiKey
        }
      }
      tracesConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
      logsConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
      metricsConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
    }
  }
}

Verwenden Sie einen Container-App-Ressourcenblock wie das folgende Beispiel, um erforderliche Umgebungsvariablen festzulegen:

resource app 'Microsoft.App/containerApps@2024-10-02-preview' = {
  name: ''
  location: ''
  properties: {
    managedEnvironmentId: environment.id
    template: {
      containers: [
        {
          name: ''
          image: ''
          env: [
            {
              name: 'OTEL_SERVICE_NAME'
              value: ''
            }
            {
              name: 'OTEL_TRACES_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_METRICS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_LOGS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_PROTOCOL'
              value: 'grpc'
            }
          ]
        }
      ]
    }
  }
}

Für Produktionsbereitstellungen übergeben Sie Tokenwerte über sichere Bicep-Parameter oder den Schlüsseltresor, anstatt Geheimnisse fest im Code zu hinterlegen.

Nachdem Sie die Vorlage aktualisiert haben, stellen Sie die Bicep-Konfiguration im Stammverzeichnis des Repositorys bereit:

az deployment group create `
  --resource-group $RESOURCE_GROUP `
  --template-file infra/main.bicep `
  --parameters @infra/main.parameters.json `
  image=$IMAGE `
  acrUsername=$ACR_USERNAME `
  acrPassword=$ACR_PASSWORD `
  datadogSite="$DATADOG_SITE" `
  datadogApiKey="$DATADOG_API_KEY"

Ihre Container-App ist jetzt so konfiguriert, dass Telemetrie über den verwalteten OpenTelemetry-Agent an Datadog gesendet wird.

Überprüfen von OpenTelemetry-Daten in Datadog

Nachdem Sie die Konfiguration abgeschlossen haben, sendet Ihre Container-App über den verwalteten OpenTelemetry-Agent Telemetrie an Datadog. Verwenden Sie Datadog, um zu bestätigen, dass Protokolle, Ablaufverfolgungen und Metriken aus der Anwendung stammen und dass die Daten unter dem erwarteten Dienst- und Umgebungskontext angezeigt werden.

Überprüfen Sie die Ergebnisse, indem Sie Datadog-Tools wie Log-Exploration, verteilte Ablaufverfolgung und Metriksuche überprüfen. Der genaue Abfrage- oder Navigationspfad variiert je nach überprüften Daten.

Weitere Informationen zur Datensuche in Datadog finden Sie unter Datadog-Observability und Telemetrie.