Exportar dados do OpenTelemetry para o Dynatrace no Aplicativos de Contêiner do Azure

Este guia mostra como configurar Aplicativos de Contêiner do Azure para encaminhar logs, rastreamentos e métricas para o Dynatrace usando o agente OpenTelemetry gerenciado.

Para obter mais informações sobre o agente OpenTelemetry gerenciado, consulte Configurar agentes do OpenTelemetry no Aplicativos de Contêiner do Azure.

O que aprendeu

  • Crie um token de ingestão do Dynatrace com os escopos necessários.
  • Configure um destino de Protocolo OpenTelemetry (OTLP) do Dynatrace usando Bicep ou o portal Azure.
  • Configure as variáveis de ambiente de aplicativo necessárias para exportação de métricas.
  • Aplique atualizações de configuração ao seu ambiente e aplicativo de Aplicativos de Contêiner existentes.
  • Verifique a telemetria no Dynatrace.

Pré-requisitos

  • Uma assinatura Azure em que você pode criar grupos de recursos e implantar Aplicativos de Contêiner do Azure recursos.
  • Um ambiente SaaS do Dynatrace.
  • CLI do Azure instalada e conectada.
  • Extensão da CLI do Aplicativos de Contêiner do Azure instalada.
az extension add --name containerapp --upgrade

Criar um token de ingestão do Dynatrace

Crie um token de API do Dynatrace com estes escopos:

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

Para obter etapas de criação de token e detalhes de permissão, consulte as diretrizes de autenticação OTLP do Dynatrace.

Configurar destinos OpenTelemetry

Use uma das opções a seguir para configurar o Dynatrace como um endpoint do OpenTelemetry no seu ambiente do Container Apps.

Importante

Configurar um destino OpenTelemetry gerenciado não produz telemetria automaticamente. Seu aplicativo também deve ser instrumentado para emitir rastreamentos, métricas e logs usando um SDK do OpenTelemetry.

Defina variáveis da CLI para o comando de implantação:

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

Use apenas o endpoint base do OTLP (/api/v2/otlp). Não acrescente /v1/traces, /v1/metricsou /v1/logs; o agente gerenciado acrescenta caminhos de sinal automaticamente.

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

Para definir as variáveis de ambiente necessárias, use um bloco de recursos de aplicativo de contêiner como o exemplo a seguir:

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

O Dynatrace exige OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA para ingerir métricas.

Para implantações de produção, passe os valores dos tokens por meio de parâmetros seguros do Bicep ou pelo Key Vault, em vez de codificar segredos diretamente no código.

Depois de atualizar o modelo, faça a implantação da configuração do Bicep a partir da raiz do repositório:

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"

Use os mesmos valores de ponto de extremidade e token mostrados anteriormente neste guia, incluindo o formato de ponto de extremidade base OTLP.

Seu aplicativo de contêiner agora está configurado para enviar telemetria ao Dynatrace.

Verificar dados do OpenTelemetry no Dynatrace

Depois de concluir a configuração, seu Aplicativo de Contêiner deve começar a enviar telemetria para o Dynatrace por meio do agente OpenTelemetry gerenciado. A maneira mais rápida de confirmar que as métricas, os logs e os rastreamentos estão todos chegando do seu aplicativo é abrir o aplicativo Serviços no Dynatrace. O aplicativo Serviços fornece uma única tela em que você pode validar todos os três sinais de telemetria para seu serviço em um só lugar.

Para verificar sua telemetria:

  1. Abra o aplicativo Serviços no Dynatrace.
  2. Localize seu serviço do Container App e confirme se as métricas, os logs e os rastreamentos estão presentes no contexto de serviço ou de ambiente esperado.

Se você precisar de informações sobre como os dados OpenTelemetry são ingeridos no Dynatrace, consulte o guia de introdução do OpenTelemetry.

Se a telemetria estiver ausente ou não aparecer conforme o esperado, consulte o guia de solução de problemas do OpenTelemetry.