Eksportowanie danych OpenTelemetry do Elastic w usłudze Azure Container Apps

W tym przewodniku konfiguracji pokazano, jak skonfigurować Azure Container Apps do przekazywania dzienników, śladów i metryk do usługi Elastic przy użyciu zarządzanego agenta OpenTelemetry.

Aby uzyskać więcej informacji na temat zarządzanego agenta OpenTelemetry, zobacz temat Agenci OpenTelemetry w usłudze Azure Container Apps.

Z tego przewodnika dowiesz się, jak wykonywać następujące działania:

  • Utwórz token pozyskiwania danych Elastic.
  • Skonfiguruj miejsce docelowe Elastic OTLP za pomocą narzędzia Bicep lub portalu Azure.
  • Skonfiguruj wymagane zmienne środowiskowe aplikacji.
  • Zastosuj aktualizacje konfiguracji do istniejącego środowiska i aplikacji usługi Container Apps.
  • Sprawdź telemetrię w Elastic.

Wymagania wstępne

  • Subskrypcja platformy Azure
  • Konto Elastic oraz docelowe wdrożenie lub projekt, które przyjmuje dane przez OTLP.
  • Azure CLI zainstalowane i zalogowane na koncie Azure.
  • Zainstalowano rozszerzenie interfejsu wiersza polecenia Azure Container Apps (dla Bicep).
az extension add --name containerapp --upgrade

Tworzenie elastycznego tokenu pozyskiwania

Utwórz klucz API Elastic, który umożliwia pozyskiwanie danych OpenTelemetry dla docelowego wdrożenia.

Wymagane uprawnienia powinny zezwalać na zapisywanie danych telemetrycznych dla tych sygnałów:

  • Przyjmowanie/zapisywanie dzienników
  • Ślady przyjmowania/zapisu
  • Pozyskiwanie/zapisywanie metryk

Aby uzyskać wskazówki dotyczące uprawnień tokenu i kluczy interfejsu API, zobacz Elastic API keys (Klucze elastycznego interfejsu API).

Konfigurowanie miejsc docelowych OpenTelemetry

Użyj jednej z poniższych opcji, aby skonfigurować Elastic jako punkt końcowy OTel w środowisku usługi Container Apps.

Ważna

Skonfigurowanie zarządzanego miejsca docelowego OpenTelemetry nie powoduje automatycznego generowania danych telemetrycznych. Aplikacja musi być już wyposażona w instrumentację, aby emitować ślady, metryki i dzienniki przy użyciu pakietu SDK OpenTelemetry.

Ustaw zmienne interfejsu wiersza polecenia dla wdrożenia:

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

Użyj formatu podstawowego punktu końcowego Elastic OTLP:

  • https://<YOUR_ELASTIC_ENDPOINT>:443

Użyj formatu nagłówka tokenu autoryzacji:

  • Klucz nagłówka: Authorization
  • Wartość nagłówka: ApiKey <TOKEN>

Użyj tego przykładowego zasobu środowiska zarządzanego, aby skonfigurować routing docelowy:

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

Użyj tego przykładu zasobu aplikacji, aby ustawić wymagane zmienne środowiskowe aplikacji:

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

Zastosuj konfigurację Bicep z katalogu głównego repozytorium:

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"

Aplikacja kontenera jest teraz skonfigurowana do wysyłania danych telemetrycznych do usługi Elastic.

Sprawdź telemetrię w Elastic

Po skonfigurowaniu sprawdź, czy dzienniki, ślady i metryki napływają z Twojej aplikacji i są przypisywane do oczekiwanej tożsamości usługi.

Użyj widoków elastycznych pasujących do przepływu pracy.

Aby uzyskać więcej informacji na temat eksploracji i analizy w Elastic, zobacz dokumentację Elastic Observability.