Exportera OpenTelemetry-data till Datadog i Azure Container Apps

Den här guiden visar hur du konfigurerar Azure Container Apps för att vidarebefordra loggar, spårningar och mått till Datadog med hjälp av den hanterade OpenTelemetry-agenten.

Mer information om den hanterade OpenTelemetry-agenten finns i Set up OpenTelemetry agents in Azure Container Apps.

Det här lär du dig

  • Skapa en Datadog API-nyckel för telemetriinmatning.
  • Konfigurera ett Datadog-mål i containerappmiljön med hjälp av Bicep, Azure CLI eller Azure portalen.
  • Tillämpa konfigurationsuppdateringar på din befintliga Container Apps-miljö och -app.
  • Kontrollera telemetrin i Datadog.

Förutsättningar

  • En Azure-prenumeration där du kan skapa resursgrupper och distribuera Azure Container Apps resurser.
  • En Datadog-miljö och EN API-nyckel.
  • Azure CLI installerat och loggat in.
  • Azure Container Apps CLI-tillägget installerat.
az extension add --name containerapp --upgrade

Skapa en Datadog API-nyckel

Skapa en Datadog API-nyckel med behörigheter som tillåter telemetriinmatning.

Du behöver följande Datadog-värden för Container Apps-hanterad OTel-konfiguration:

  • site (det fullständiga värdet för Datadog-webbplatsen, till exempel: datadoghq.com, us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu)
  • key (Datadog API-nyckel)

Information om hur du skapar och hanterar Datadog-nycklar finns i Datadog API och programnycklar.

Konfigurera OpenTelemetry-mål

Använd något av följande alternativ för att konfigurera Datadog som ett OpenTelemetry-mål i din Container Apps-miljö.

Important

När du konfigurerar ett hanterat OpenTelemetry-mål genereras inte telemetri automatiskt. Ditt program måste också instrumenteras för att generera spårningar, mått och loggar med hjälp av en OpenTelemetry SDK.

Ange CLI-variabler för distributionskommandot:

$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 = ""

Använd ett resursblock för hanterad miljö som i följande exempel:

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
        ]
      }
    }
  }
}

Använd ett containerappresursblock som i följande exempel för att ange nödvändiga miljövariabler:

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 produktionsdriftsättningar anger du tokenvärden via säkra Bicep-parametrar eller Key Vault i stället för att hårdkoda hemligheter.

När du har uppdaterat mallen distribuerar du Bicep konfigurationen från lagringsplatsens rot:

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"

Containerappen har nu konfigurerats för att skicka telemetri till Datadog via den hanterade OpenTelemetry-agenten.

Kontrollera data från OpenTelemetry i Datadog

När du har slutfört konfigurationen börjar containerappen skicka telemetri till Datadog via den hanterade OpenTelemetry-agenten. Använd Datadog för att bekräfta att loggar, spårningar och mått kommer från programmet och att data visas under den förväntade tjänst- och miljökontexten.

Verifiera resultaten genom att kontrollera Datadog-verktyg som loggutforskning, distribuerad spårning och måttsökning. Den exakta fråge- eller navigeringssökvägen varierar beroende på vilka data du inspekterar.

Mer information om datautforskning i Datadog finns i Datadog-observerbarhet och telemetri.