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

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

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

学習内容

  • 必要なスコープを持つ Dynatrace 取り込みトークンを作成します。
  • Bicep または Azure ポータルを使用して、Dynatrace OpenTelemetry Protocol (OTLP) の送信先を構成します。
  • メトリックのエクスポートに必要なアプリ環境変数を構成します。
  • 既存の Container Apps 環境とアプリに構成の更新を適用します。
  • Dynatrace でテレメトリを確認します。

前提条件

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

Dynatrace インジェストトークンを作成する

次のスコープを使用して Dynatrace API トークンを作成します。

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

トークンの作成手順とアクセス許可の詳細については、 Dynatrace OTLP 認証ガイダンスを参照してください。

OpenTelemetry の送信先を設定する

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

テンプレートを更新した後、リポジトリ ルートから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 データを確認する

構成が完了したら、Container App がマネージド OpenTelemetry エージェントを介して Dynatrace へのテレメトリの送信を開始する必要があります。 メトリック、ログ、トレースがすべてアプリケーションから到着していることを確認する最も速い方法は、Dynatrace で サービス アプリ を開く方法です。 サービス アプリには、サービスの 3 つのテレメトリ信号をすべて 1 か所で検証できる 1 つの画面が用意されています。

テレメトリを確認するには:

  1. Dynatrace で サービス アプリ を開きます。
  2. Container App Service を見つけ、予想されるサービスまたは環境コンテキストに対してメトリック、ログ、トレースが存在することを確認します。

OpenTelemetry データを Dynatrace に取り込む方法の背景が必要な場合は、 OpenTelemetry の概要ガイドを参照してください。

テレメトリが見つからないか、期待どおりに表示されない場合は、 OpenTelemetry のトラブルシューティング ガイドを参照してください。