Azure Container Appsで OpenTelemetry データを Datadog にエクスポートする

このガイドでは、マネージド OpenTelemetry エージェントを使用して、ログ、トレース、メトリックを Datadog に転送するようにAzure Container Appsを構成する方法について説明します。

マネージド OpenTelemetry エージェントの詳細については、「Set up OpenTelemetry agents in Azure Container Apps」を参照してください。

学習内容

  • テレメトリの取り込み用の Datadog API キーを作成します。
  • Bicep、Azure CLI、または Azure ポータルを使用して、Container Apps 環境で Datadog の宛先を構成します。
  • 既存の Container Apps 環境とアプリに構成の更新を適用します。
  • Datadog でテレメトリを確認します。

前提条件

  • リソース グループを作成してリソースをデプロイできるAzure サブスクリプションAzure Container Apps。
  • Datadog 環境と API キー。
  • Azure CLI がインストールされ、サインインされました。
  • AZURE CONTAINER APPS CLI 拡張機能がインストールされています。
az extension add --name containerapp --upgrade

Datadog API キーを作成する

テレメトリの取り込みを許可するアクセス許可を持つ Datadog API キーを作成します。

Container Apps マネージド OTel 構成には、次の Datadog 値が必要です。

  • site (完全な Datadog サイト値 (例: datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.eu)
  • key (Datadog API キー)

Datadog キーの作成と管理については、 Datadog API とアプリケーション キーに関する説明を参照してください。

OpenTelemetry の送信先を設定する

次のいずれかのオプションを使用して、Container Apps 環境で 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 パラメーターまたはKey Vaultを介してトークン値を渡します。

テンプレートを更新した後、リポジトリ ルートから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 の可観測性とテレメトリに関するページを参照してください。