Exportera OpenTelemetry Elastic i Azure Container Apps

Den här konfigurationsguiden visar hur du konfigurerar Azure Container Apps att vidarebefordra loggar, spårningar och mått till Elastic med hjälp av den hanterade OpenTelemetry-agenten.

Mer information om den hanterade OpenTelemetry-agenten finns i OpenTelemetry-agenter i Azure Container Apps.

I den här guiden lär du dig att:

  • Skapa en Elastic-inmatningstoken.
  • Konfigurera ett Elastiskt OTLP-mål med hjälp av Bicep eller Azure-portalen.
  • Konfigurera nödvändiga appmiljövariabler.
  • Tillämpa konfigurationsuppdateringar på din befintliga Container Apps-miljö och -app.
  • Kontrollera telemetri i Elastic.

Förutsättningar

  • En prenumeration på Azure
  • Ett elastiskt konto och måldistribution eller projekt som accepterar OTLP-inmatning.
  • Azure CLI installerat och loggat in på ditt Azure-konto.
  • Azure Container Apps CLI-tillägget installerat (för Bicep).
az extension add --name containerapp --upgrade

Skapa en Elastic-inmatningstoken

Skapa en elastisk API-nyckel som kan mata in OpenTelemetry-data för måldistributionen.

De behörigheter som krävs bör tillåta att telemetridata skrivs för dessa signaler:

  • Inmatning/skrivning av loggar
  • Spårningar för inmatning/skrivning
  • Insamling/skrivning av mätvärden

Vägledning om tokenbehörigheter och API-nycklar finns i Elastiska API-nycklar.

Konfigurera OpenTelemetry-mål

Använd något av följande alternativ för att konfigurera Elastic som en OTel-slutpunkt i containerappmiljön.

Important

När du konfigurerar ett hanterat OpenTelemetry-mål genereras inte telemetri automatiskt. Programmet måste redan vara instrumenterat för att generera spårningar, mått och loggar med hjälp av en OpenTelemetry SDK.

Ange CLI-variabler för distribution:

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

Använd det elastiska OTLP-basslutpunktsformatet:

  • https://<YOUR_ELASTIC_ENDPOINT>:443

Använd rubrikformatet för auktoriseringstoken:

  • Rubriknyckel: Authorization
  • Rubrikvärde: ApiKey <TOKEN>

Använd det här resursexemplet för hanterad miljö för att konfigurera målroutning:

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

Använd det här appresursexemplet för att ange nödvändiga appmiljövariabler:

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

Använd din Bicep-konfiguration från rotkatalogen i lagringsplatsen:

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"

Containerappen är nu konfigurerad för att skicka telemetri till Elastic.

Kontrollera telemetri i Elastic

Efter konfigurationen kontrollerar du att loggar, spårningar och mått kommer från ditt program och mappar till den förväntade tjänstidentiteten.

Använd de elastiska vyer som passar ditt arbetsflöde.

Mer information om utforskning och analys i Elastic finns i dokumentationen om elastisk observerbarhet.