Eksport danych OpenTelemetry do Dynatrace w Azure Container Apps

W tym przewodniku pokazano, jak skonfigurować Azure Container Apps do przekazywania dzienników, śladów i metryk do rozwiązania Dynatrace przy użyciu zarządzanego agenta OpenTelemetry.

Aby uzyskać więcej informacji na temat zarządzanego agenta OpenTelemetry, zobacz Set up OpenTelemetry agents in Azure Container Apps (Konfigurowanie agentów OpenTelemetry w programie Azure Container Apps

Czego się uczysz

  • Utwórz token Dynatrace do przesyłania danych z wymaganymi uprawnieniami.
  • Skonfiguruj miejsce docelowe protokołu OpenTelemetry (OTLP) w usłudze Dynatrace przy użyciu narzędzia Bicep lub portalu Azure.
  • Skonfiguruj wymagane zmienne środowiskowe aplikacji na potrzeby eksportowania metryk.
  • Zastosuj aktualizacje konfiguracji do istniejącego środowiska i aplikacji usługi Container Apps.
  • Zweryfikuj dane telemetryczne w aplikacji Dynatrace.

Wymagania wstępne

  • Subskrypcja Azure, w której można tworzyć grupy zasobów i wdrażać zasoby Azure Container Apps.
  • Środowisko Dynatrace SaaS.
  • Azure CLI zainstalowane i zalogowane.
  • Zainstalowano rozszerzenie interfejsu wiersza polecenia Azure Container Apps.
az extension add --name containerapp --upgrade

Utwórz token ingestu Dynatrace

Utwórz token interfejsu API Dynatrace z następującymi zakresami:

  • logs.ingest
  • metrics.ingest
  • openTelemetryTrace.ingest

Aby uzyskać szczegółowe informacje na temat kroków tworzenia tokenów i uprawnień, zobacz Dynatrace OTLP authentication guidance (Wskazówki dotyczące uwierzytelniania Dynatrace OTLP).

Konfigurowanie miejsc docelowych OpenTelemetry

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

Ważna

Skonfigurowanie zarządzanego miejsca docelowego OpenTelemetry nie powoduje automatycznego generowania danych telemetrycznych. Aplikacja musi być również wyposażona w instrumentację umożliwiającą wysyłanie śladów, metryk i logów przy użyciu pakietu SDK OpenTelemetry.

Ustaw zmienne interfejsu wiersza polecenia dla polecenia wdrożenia:

$RESOURCE_GROUP = "<RESOURCE_GROUP_NAME>"
$DYNATRACE_OTLP_ENDPOINT = "https://<TENANT>.live.dynatrace.com/api/v2/otlp"
$DYNATRACE_API_TOKEN = "<DYNATRACE_INGEST_TOKEN>"

Użyj tylko podstawowego punktu końcowego OTLP (/api/v2/otlp). Nie dodawaj /v1/traces, /v1/metrics ani /v1/logs; zarządzany agent automatycznie dodaje ścieżki sygnału.

var dynatraceEndpoint = 'https://<TENANT>.live.dynatrace.com/api/v2/otlp'
var dynatraceApiKey = '<DYNATRACE_INGEST_TOKEN>'
var dynatraceAuthHeader = 'Api-Token ${dynatraceApiKey}'
var dynatraceOtlpDestinationName = 'dynatrace-otlp'

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

Aby ustawić wymagane zmienne środowiskowe, użyj bloku zasobów aplikacji kontenera, jak w poniższym przykładzie:

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_PROTOCOL'
              value: 'http/protobuf'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE'
              value: 'DELTA'
            }
          ]
        }
      ]
    }
  }
}

Dynatrace wymaga OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA, aby pozyskiwać metryki.

W przypadku wdrożeń produkcyjnych przekaż wartości tokenów za pośrednictwem bezpiecznych parametrów Bicep lub Key Vault zamiast trwale zakodowanych wpisów tajnych.

Po zaktualizowaniu szablonu wdróż 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 `
  dynatraceEndpoint="$DYNATRACE_OTLP_ENDPOINT" `
  dynatraceApiKey="$DYNATRACE_API_TOKEN"

Użyj tych samych wartości punktu końcowego i tokenu pokazanych wcześniej w tym przewodniku, w tym podstawowego formatu punktu końcowego OTLP.

Aplikacja kontenera jest teraz skonfigurowana do wysyłania danych telemetrycznych do aplikacji Dynatrace.

Weryfikowanie danych OpenTelemetry w rozwiązaniu Dynatrace

Po zakończeniu konfiguracji aplikacja kontenera powinna rozpocząć wysyłanie danych telemetrycznych do rozwiązania Dynatrace za pośrednictwem zarządzanego agenta OpenTelemetry. Najszybszym sposobem potwierdzenia, że metryki, dzienniki i ślady docierają z aplikacji, jest otwarcie aplikacji Usługi w aplikacji Dynatrace. Aplikacja Usługi udostępnia jeden ekran, na którym można zweryfikować wszystkie trzy sygnały telemetryczne dla usługi w jednym miejscu.

Aby zweryfikować dane telemetryczne:

  1. Otwórz aplikację Usługi w aplikacji Dynatrace.
  2. Znajdź usługę Container App i potwierdź, że metryki, dzienniki i ślady są dostępne dla oczekiwanej usługi lub środowiska.

Jeśli potrzebujesz informacji o tym, jak dane OpenTelemetry są importowane do Dynatrace, zobacz przewodnik Wprowadzenie do OpenTelemetry.

Jeśli brakuje telemetrii lub nie jest wyświetlana zgodnie z oczekiwaniami, zobacz przewodnik rozwiązywania problemów z funkcją OpenTelemetry.