將 OpenTelemetry 資料匯出至 Azure 容器應用程式 中的 Datadog

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

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

您學到什麼

  • 建立一個用於遙測資料擷取的 Datadog API 金鑰。
  • 在你的容器應用環境中,使用 Bicep、Azure CLI 或 Azure 入口網站來配置 Datadog 目的地。
  • 對你現有的容器應用程式環境和應用程式套用設定更新。
  • 在Datadog中驗證遙測數據。

先決條件

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

建立 Datadog API 金鑰

建立具備允許遙測資料攝取權限的 Datadog API 金鑰。

您需要下列 Datadog 值,才能設定 Container Apps 受控 OTel 組態

  • site(完整的 Datadog 網站值,例如:datadoghq.com、us3.datadoghq.com、us5.datadoghq.com、datadoghq.eu)
  • key (Datadog API 金鑰)

關於 Datadog 金鑰的建立與管理,請參見 Datadog API 與應用程式金鑰。

設定 OpenTelemetry 目的端

請使用以下選項之一,將 Datadog 設定為容器應用程式中的 OpenTelemetry 目的地。

Important

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

為部署指令設定 CLI 變數:

$RESOURCE_GROUP = "<resource-group-name>"
$DATADOG_SITE = "<datadog-site>" # Example: us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu
$DATADOG_API_KEY = ""
$IMAGE = ""
$ACR_USERNAME = ""
$ACR_PASSWORD = ""

使用像以下範例的受管理環境資源區塊:

param datadogSite string
@secure()
param datadogApiKey string

var datadogDestinationName = 'dataDog'

resource environment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = {
  name: ''
  location: ''
  properties: {
    openTelemetryConfiguration: {
      destinationsConfiguration: {
        dataDogConfiguration: {
          site: datadogSite
          key: datadogApiKey
        }
      }
      tracesConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
      logsConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
      metricsConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
    }
  }
}

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

resource app 'Microsoft.App/containerApps@2024-10-02-preview' = {
  name: ''
  location: ''
  properties: {
    managedEnvironmentId: environment.id
    template: {
      containers: [
        {
          name: ''
          image: ''
          env: [
            {
              name: 'OTEL_SERVICE_NAME'
              value: ''
            }
            {
              name: 'OTEL_TRACES_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_METRICS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_LOGS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_PROTOCOL'
              value: 'grpc'
            }
          ]
        }
      ]
    }
  }
}

針對生產部署,請透過安全的 Bicep 參數或 金鑰保存庫 傳遞權杖值,而非將秘密硬式編碼

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

az deployment group create `
  --resource-group $RESOURCE_GROUP `
  --template-file infra/main.bicep `
  --parameters @infra/main.parameters.json `
  image=$IMAGE `
  acrUsername=$ACR_USERNAME `
  acrPassword=$ACR_PASSWORD `
  datadogSite="$DATADOG_SITE" `
  datadogApiKey="$DATADOG_API_KEY"

你的容器應用程式現在設定成透過受管理的 OpenTelemetry 代理將遙測資料傳送給 Datadog。

在 Datadog 中驗證 OpenTelemetry 資料

完成設定後,容器應用程式會開始透過受管理的 OpenTelemetry 代理向 Datadog 傳送遙測資料。 使用 Datadog 確認日誌、追蹤資料與指標是否從應用程式傳送,且資料是否出現在預期的服務與環境情境下。

透過使用日誌探索、分散式追蹤和指標搜尋等 Datadog 工具來驗證結果。 具體查詢或導航路徑會依你檢查的資料而異。

欲了解更多關於 Datadog 資料探索的資訊,請參見 Datadog 可觀察性與遙測。