Exportar dados do OpenTelemetry para o Datadog no Azure Container Apps

Este guia mostra como configurar as Azure Container Apps para encaminhar registos, rastreios e métricas para o Datadog, recorrendo ao agente gerido do OpenTelemetry.

Para mais informações sobre o agente OpenTelemetry gerido, consulte configurar agentes OpenTelemetry em Azure Container Apps.

O que você aprende

  • Crie uma chave API Datadog para a ingestão de telemetria.
  • Configure um destino Datadog no seu ambiente Container Apps usando Bicep, CLI do Azure ou o portal Azure.
  • Aplique atualizações de configuração ao seu ambiente e aplicação Container Apps existentes.
  • Verifique a telemetria no Datadog.

Pré-requisitos

  • Uma subscrição do Azure onde podes criar grupos de recursos e implementar recursos do Azure Container Apps.
  • Um ambiente Datadog e uma chave API.
  • CLI do Azure instalado e autenticado.
  • Extensão da CLI do Azure Container Apps instalada.
az extension add --name containerapp --upgrade

Criar uma chave API Datadog

Crie uma chave API Datadog com permissões que permitam a ingestão de telemetria.

Precisa dos seguintes valores Datadog para a configuração OTel gerida pelo Container Apps:

  • site (valor completo do site Datadog, por exemplo: datadoghq.com, us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu)
  • key (a chave da API do Datadog)

Para criação e gestão de chaves Datadog, consulte API Datadog e chaves de aplicação.

Configurar os destinos do OpenTelemetry

Use uma das seguintes opções para configurar o Datadog como destino OpenTelemetry no seu ambiente Container Apps.

Importante

Configurar um destino OpenTelemetry gerido não produz automaticamente telemetria. A sua aplicação também deve ser instrumentada para emitir traços, métricas e logs usando um SDK OpenTelemetry.

Defina variáveis CLI para o comando de deployment:

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

Use um bloco de recursos de ambiente gerido como o seguinte exemplo:

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

Use um bloco de recurso de aplicação container, como o seguinte exemplo, para definir as variáveis de ambiente necessárias:

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

Para implementações em produção, passar os valores dos tokens através de parâmetros seguros do Bicep ou Key Vault em vez de codificar segredos de forma rígida.

Depois de atualizar o modelo, implemente a 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 `
  image=$IMAGE `
  acrUsername=$ACR_USERNAME `
  acrPassword=$ACR_PASSWORD `
  datadogSite="$DATADOG_SITE" `
  datadogApiKey="$DATADOG_API_KEY"

A sua Aplicação Container está agora configurada para enviar telemetria para o Datadog através do agente gerido OpenTelemetry.

Verificar os dados do OpenTelemetry no Datadog

Depois de concluir a configuração, a sua aplicação container começa a enviar telemetria para o Datadog através do agente gerido OpenTelemetry. Utilize o Datadog para confirmar que os logs, traces e métricas estão a ser enviados pela aplicação e que os dados estão associados ao serviço e ao ambiente esperados.

Valide os resultados verificando ferramentas Datadog como exploração de logs, rastreio distribuído e pesquisa métrica. A consulta exata ou o percurso de navegação varia consoante os dados que inspeciona.

Para mais informações sobre exploração de dados no Datadog, consulte Observabilidade e telemetria do Datadog.