Exportera OpenTelemetry-data till Dynatrace i Azure Container Apps

Den här guiden visar hur du konfigurerar Azure Container Apps att vidarebefordra loggar, spårningar och mått till Dynatrace 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 Dynatrace-intagstoken med de nödvändiga behörigheterna.
  • Konfigurera ett Dynatrace OpenTelemetry Protocol-mål (OTLP) med hjälp av Bicep eller Azure-portalen.
  • Konfigurera nödvändiga appmiljövariabler för måttexport.
  • Tillämpa konfigurationsuppdateringar på din befintliga Container Apps-miljö och -app.
  • Kontrollera telemetrin i Dynatrace.

Förutsättningar

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

Skapa en Dynatrace-intagstoken

Skapa en Dynatrace API-token med följande omfång:

  • logs.ingest
  • metrics.ingest
  • openTelemetryTrace.ingest

Information om hur du skapar token och behörighetsinformation finns i Vägledning för Dynatrace OTLP-autentisering.

Konfigurera OpenTelemetry-mål

Använd något av följande alternativ för att konfigurera Dynatrace som en OpenTelemetry-slutpunkt i containerappmiljön.

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>"
$DYNATRACE_OTLP_ENDPOINT = "https://<TENANT>.live.dynatrace.com/api/v2/otlp"
$DYNATRACE_API_TOKEN = "<DYNATRACE_INGEST_TOKEN>"

Använd endast OTLP-basslutpunkten (/api/v2/otlp). Lägg inte till /v1/traces, /v1/metricseller /v1/logs; den hanterade agenten lägger till signalsökvägar automatiskt.

var dynatraceEndpoint = 'https://<TENANT>.live.dynatrace.com/api/v2/otlp'
var dynatraceApiKey = '<DYNATRACE_INGEST_TOKEN>'
var dynatraceAuthHeader = 'Api-Token ${dynatraceApiKey}'
var dynatraceOtlpDestinationName = 'dynatrace-otlp'

resource environment 'Microsoft.App/managedEnvironments@2026-03-02-preview' = {
  name: '<managed-environment-name>'
  location: '<region>'
  properties: {
    openTelemetryConfiguration: {
      destinationsConfiguration: {
        otlpConfigurations: [
          {
            name: dynatraceOtlpDestinationName
            endpoint: dynatraceEndpoint
            protocol: 'http'
            insecure: false
            headers: [
              {
                key: 'Authorization'
                value: dynatraceAuthHeader
              }
            ]
          }
        ]
      }
      tracesConfiguration: {
        destinations: [
          dynatraceOtlpDestinationName
        ]
      }
      logsConfiguration: {
        destinations: [
          dynatraceOtlpDestinationName
        ]
      }
      metricsConfiguration: {
        destinations: [
          dynatraceOtlpDestinationName
        ]
      }
    }
  }
}

Om du vill ange nödvändiga miljövariabler använder du ett containerappresursblock som i följande exempel:

resource app 'Microsoft.App/containerApps@2023-05-01' = {
  name: '<CONTAINER_APP_NAME>'
  location: '<REGION>'
  properties: {
    managedEnvironmentId: environment.id
    template: {
      containers: [
        {
          name: '<CONTAINER_NAME>'
          image: '<IMAGE_NAME>'
          env: [
            {
              name: 'OTEL_SERVICE_NAME'
              value: '<SERVICE_NAME>'
            }
            {
              name: 'OTEL_TRACES_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_METRICS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_LOGS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_METRICS_PROTOCOL'
              value: 'http/protobuf'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE'
              value: 'DELTA'
            }
          ]
        }
      ]
    }
  }
}

Dynatrace kräver OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA för att importera mätvärden.

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 `
  dynatraceEndpoint="$DYNATRACE_OTLP_ENDPOINT" `
  dynatraceApiKey="$DYNATRACE_API_TOKEN"

Använd samma slutpunkts- och tokenvärden som visades tidigare i den här guiden, inklusive OTLP-basslutpunktsformatet.

Containerappen är nu konfigurerad för att skicka telemetri till Dynatrace.

Kontrollera OpenTelemetry-data i Dynatrace

När du har slutfört konfigurationen bör containerappen börja skicka telemetri till Dynatrace via den hanterade OpenTelemetry-agenten. Det snabbaste sättet att bekräfta att mått, loggar och spårningar alla kommer från ditt program är att öppna services-appen i Dynatrace. Appen Services innehåller en enda skärm där du kan verifiera alla tre telemetrisignalerna för din tjänst på ett och samma ställe.

Så här verifierar du telemetrin:

  1. Öppna appen Services i Dynatrace.
  2. Leta upp containerapptjänsten och bekräfta att mått, loggar och spårningar finns för den förväntade tjänst- eller miljökontexten.

Om du behöver bakgrund om hur OpenTelemetry-data matas in i Dynatrace kan du läsa guiden Komma igång med OpenTelemetry.

Om telemetri saknas eller inte visas som förväntat kan du läsa felsökningsguiden för OpenTelemetry.