在 Azure 容器應用程式 中將 OpenTelemetry 資料匯出至 Dynatrace

本指南說明如何設定 Azure 容器應用程式,透過受管理的 OpenTelemetry 代理將日誌、追蹤和指標轉發給 Dynatrace。

如需更多有關受控 OpenTelemetry 代理程式的資訊,請參閱 在 Azure 容器應用程式 中設定 OpenTelemetry 代理程式。

您學到什麼

  • 使用所需範圍建立 Dynatrace 擷取權杖。
  • 使用 Bicep 或 Azure 入口網站設定 Dynatrace OpenTelemetry Protocol(OTLP)目的地。
  • 設定必要的應用程式環境變數以匯出指標。
  • 對你現有的容器應用程式環境和應用程式套用設定更新。
  • 在 Dynatrace 中驗證遙測數據。

先決條件

  • 一個 Azure 訂閱,可以建立資源群組並部署 Azure 容器應用程式 資源。
  • 一個 Dynatrace SaaS 環境。
  • Azure CLI 已安裝並登入。
  • 已安裝 Azure 容器應用程式 CLI 擴充功能。
az extension add --name containerapp --upgrade

建立 Dynatrace 擷取權杖

建立一個包含以下範圍的 Dynatrace API 令牌:

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

關於令牌建立步驟及權限細節,請參閱 Dynatrace OTLP 認證指引。

設定 OpenTelemetry 目的端

請使用以下選項之一,在你的容器應用程式環境中將 Dynatrace 設定為 OpenTelemetry 端點。

Important

設定受管理的 OpenTelemetry 目的地並不會自動產生遙測結果。 您的應用程式也必須透過 OpenTelemetry SDK 進行儀器化,以發送追蹤、指標和日誌。

為部署指令設定 CLI 變數:

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

只使用 OTLP 基礎端點(/api/v2/otlp)。 不要附加 /v1/traces、 /v1/metrics或 /v1/logs;管理代理會自動附加訊號路徑。

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

要設定所需的環境變數,請使用像以下範例的容器應用程式資源區塊:

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 需要 OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA 輸入指標。

對於生產部署,請透過安全 Bicep 參數或 金鑰保存庫 傳遞權杖值,而不要將祕密硬式編碼。

更新範本後,請從存放庫根目錄部署 Bicep 設定:

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"

請使用本指南前述所示的端點與令牌值,包括 OTLP 基礎端點格式。

你的容器應用程式現在已經設定成將遙測資料傳送到 Dynatrace。

在 Dynatrace 中驗證 OpenTelemetry 資料

完成設定後,容器應用程式應該會開始透過受管理的 OpenTelemetry 代理向 Dynatrace 傳送遙測資料。 確認指標、日誌和追蹤資料都從你的應用程式傳送最快的方法,就是在 Dynatrace 中開啟 服務應用程式 。 服務應用程式提供單一畫面,讓你能在同一地點驗證服務的三種遙測訊號。

要驗證你的遙測結果:

  1. 在 Dynatrace 中開啟 服務應用程式 。
  2. 找到你的容器應用程式服務,確認預期服務或環境的指標、日誌與追蹤是否存在。

如果你需要了解 OpenTelemetry 資料如何被導入 Dynatrace,請參閱 OpenTelemetry 入門指南。

如果遙測資料遺失或未如預期出現,請參閱 OpenTelemetry 故障排除指南。