Exportar dados do OpenTelemetry para o Datadog 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 Datadog 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 uma chave de API da Datadog para ingestão de telemetria.
  • Configure um destino do Datadog no ambiente do Container Apps usando o Bicep, a CLI do Azure ou o portal do Azure.
  • Aplique atualizações de configuração ao seu ambiente e aplicativo de Aplicativos de Contêiner existentes.
  • Verifique a telemetria no Datadog.

Prerequisites

  • Uma assinatura Azure em que você pode criar grupos de recursos e implantar Aplicativos de Contêiner do Azure recursos.
  • Um ambiente datadog e uma chave de API.
  • 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 uma chave de API do Datadog

Crie uma chave de API da Datadog com permissões para ingestão de telemetria.

Você precisa dos seguintes valores do Datadog para a configuração gerenciada do OTel no Container Apps:

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

Para criação e gerenciamento de chaves do Datadog, consulte a API do Datadog e as chaves de aplicativo.

Configurar destinos OpenTelemetry

Use uma das opções a seguir para configurar o Datadog como um destino OpenTelemetry em seu ambiente de Aplicativos de Contêiner.

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>"
$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 gerenciado como o exemplo a seguir:

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 recursos de aplicativo de contêiner como o exemplo a seguir 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 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 `
  image=$IMAGE `
  acrUsername=$ACR_USERNAME `
  acrPassword=$ACR_PASSWORD `
  datadogSite="$DATADOG_SITE" `
  datadogApiKey="$DATADOG_API_KEY"

Seu Aplicativo de Contêiner agora está configurado para enviar telemetria ao Datadog por meio do agente OpenTelemetry gerenciado.

Verificar dados do OpenTelemetry no Datadog

Depois de concluir a configuração, seu aplicativo de contêiner começa a enviar telemetria para o Datadog por meio do agente OpenTelemetry gerenciado. Use o Datadog para confirmar se os logs, rastreamentos e métricas estão chegando do aplicativo e que os dados são exibidos no contexto de ambiente e serviço esperados.

Valide os resultados verificando as ferramentas do Datadog, como exploração de log, rastreamento distribuído e pesquisa de métricas. A consulta exata ou o caminho de navegação varia dependendo dos dados que você inspeciona.

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