Esportare i dati OpenTelemetry in Dynatrace in App contenitore di Azure

Questa guida illustra come configurare App contenitore di Azure per inoltrare log, tracce e metriche a Dynatrace usando l'agente OpenTelemetry gestito.

Per altre informazioni sull'agente OpenTelemetry gestito, vedere Impostare gli agenti OpenTelemetry in App contenitore di Azure.

Cosa imparerai

  • Creare un token di inserimento Dynatrace con gli ambiti necessari.
  • Configurare una destinazione OTLP (Dynatrace OpenTelemetry Protocol) usando Bicep o il portale di Azure.
  • Configurare le variabili di ambiente dell'app necessarie per l'esportazione delle metriche.
  • Applica gli aggiornamenti di configurazione all'ambiente e all'app Container Apps esistenti.
  • Verificare i dati di telemetria in Dynatrace.

Prerequisiti

  • Una sottoscrizione Azure in cui è possibile creare gruppi di risorse e distribuire App contenitore di Azure risorse.
  • Ambiente SaaS Dynatrace.
  • interfaccia della riga di comando di Azure è stato installato e l'accesso è avvenuto.
  • Estensione dell'interfaccia della riga di comando di App contenitore di Azure installata.
az extension add --name containerapp --upgrade

Crea un token di acquisizione Dynatrace

Creare un token API Dynatrace con questi ambiti:

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

Per informazioni dettagliate sulla creazione di token e sulle autorizzazioni, vedere Le linee guida per l'autenticazione OTLP dynatrace.

Configurare le destinazioni OpenTelemetry

Usa una delle opzioni seguenti per configurare Dynatrace come endpoint OpenTelemetry nell'ambiente delle app contenitore.

Importante

La configurazione di una destinazione OpenTelemetry gestita non produce automaticamente dati di telemetria. L'applicazione deve anche essere instrumentata per generare tracce, metriche e log tramite OpenTelemetry SDK.

Impostare le variabili CLI per il comando di distribuzione:

$RESOURCE_GROUP = "<RESOURCE_GROUP_NAME>"
$DYNATRACE_OTLP_ENDPOINT = "https://<TENANT>.live.dynatrace.com/api/v2/otlp"
$DYNATRACE_API_TOKEN = "<DYNATRACE_INGEST_TOKEN>"

Usare solo l'endpoint di base OTLP (/api/v2/otlp). Non aggiungere /v1/traces, /v1/metrics o /v1/logs; l'agente gestito aggiunge automaticamente i percorsi del segnale.

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@2024-10-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
        ]
      }
    }
  }
}

Per impostare le variabili di ambiente necessarie, usare un blocco di risorse dell'app contenitore come nell'esempio seguente:

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 richiede OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA per acquisire metriche.

Per le distribuzioni di produzione, passa i valori dei token tramite parametri Bicep sicuri o Key Vault, anziché codificare i segreti direttamente nel codice.

Dopo aver aggiornato il modello, distribuisci la configurazione Bicep dalla radice del repository:

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"

Usare gli stessi valori di endpoint e token illustrati in precedenza in questa guida, incluso il formato dell'endpoint di base OTLP.

L'app contenitore è ora configurata per inviare dati di telemetria a Dynatrace.

Verifica dei dati OpenTelemetry in Dynatrace

Dopo aver completato la configurazione, l'app contenitore deve iniziare a inviare dati di telemetria a Dynatrace tramite l'agente OpenTelemetry gestito. Il modo più rapido per verificare che le metriche, i log e le tracce arrivino tutte dall'applicazione consiste nell'aprire l'app Servizi in Dynatrace. L'app Servizi offre una singola schermata in cui è possibile convalidare tutti e tre i segnali di telemetria per il servizio in un'unica posizione.

Per verificare i dati di telemetria:

  1. Apri l'app Servizi in Dynatrace.
  2. Individua il servizio Container App e verifica che le metriche, i log e le tracce siano presenti nel contesto del servizio o dell'ambiente previsto.

Per informazioni generali sull'inserimento dei dati OpenTelemetry in Dynatrace, vedere la guida introduttiva a OpenTelemetry.

Se la telemetria è mancante o non viene visualizzata come previsto, vedere la guida alla risoluzione dei problemi di OpenTelemetry.