Exportar OpenTelemetry Elastic no Azure Container Apps

Este guia de configuração mostra como configurar o Azure Container Apps para encaminhar registos, rastreios e métricas para o Elastic, utilizando o agente OpenTelemetry gerido.

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

Neste guia, você aprenderá a:

  • Crie um token de ingestão do Elastic.
  • Configure um destino OTLP elástico usando o Bicep ou o portal Azure.
  • Configure as variáveis necessárias do ambiente da aplicação.
  • Aplique atualizações de configuração ao seu ambiente e aplicação Container Apps existentes.
  • Verifique a telemetria no Elastic.

Pré-requisitos

  • Uma assinatura do Azure
  • Uma conta Elastic e uma implementação ou projeto alvo que aceita a ingestão OTLP.
  • CLI do Azure instalado e iniciado sessão na sua conta Azure.
  • Extensão da CLI do Azure Container Apps instalada (para o Bicep).
az extension add --name containerapp --upgrade

Crie um token de ingestão elástica

Crie uma chave Elastic API que possa ingerir dados OpenTelemetry para a sua implementação alvo.

As permissões necessárias devem permitir a escrita de dados de telemetria para estes sinais:

  • Registos de ingestão/escrita
  • Ingestão de vestígios/escrita
  • Ingestão/escrita de métricas

Para orientação do fornecedor sobre permissões de tokens e chaves API, consulte Chaves Elastic API.

Configurar os destinos do OpenTelemetry

Use uma das seguintes opções para configurar o Elastic como endpoint OTel no seu ambiente de Aplicações de Container.

Importante

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

Defina variáveis CLI para implementação:

$RESOURCE_GROUP = "<RESOURCE_GROUP_NAME>"
$ELASTIC_OTLP_ENDPOINT = "https://<YOUR_ELASTIC_ENDPOINT>:443"
$ELASTIC_API_KEY = "<ELASTIC_API_KEY_WITHOUT_PREFIX>"

Use o formato base de endpoint Elastic OTLP:

  • https://<YOUR_ELASTIC_ENDPOINT>:443

Use o formato do cabeçalho do token de autorização:

  • Chave do cabeçalho: Authorization
  • Valor do cabeçalho: ApiKey <TOKEN>

Use este exemplo de recurso de ambiente gerido para configurar o encaminhamento de destino:

@secure()
param elasticApiKey string
param elasticOtlpEndpoint string = 'https://<YOUR_ELASTIC_ENDPOINT>:443'

var elasticDestinationName = 'elastic-otlp'
var elasticAuthHeaderValue = 'ApiKey ${elasticApiKey}'

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

Use este exemplo de recurso da aplicação para definir as variáveis necessárias do ambiente da aplicação:

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_TEMPORALITY_PREFERENCE'
              value: 'cumulative'
            }
          ]
        }
      ]
    }
  }
}

Aplique a sua configuração 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 `
  --parameters elasticOtlpEndpoint="$ELASTIC_OTLP_ENDPOINT" `
  --parameters elasticApiKey="$ELASTIC_API_KEY"

A sua aplicação Container está agora configurada para enviar telemetria para a Elastic.

Verificar a telemetria no Elastic

Após a configuração, verifique se os logs, traços e métricas provenientes da sua aplicação correspondem à identidade de serviço esperada.

Usa as vistas Elastic que se adaptam ao teu fluxo de trabalho.

Para mais informações sobre exploração e análise em Elastic, consulte a documentação de Observabilidade Elástica.