このガイドでは、マネージド 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.ingestmetrics.ingestopenTelemetryTrace.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 つの画面が用意されています。
テレメトリを確認するには:
- Dynatrace で サービス アプリ を開きます。
- Container App Service を見つけ、予想されるサービスまたは環境コンテキストに対してメトリック、ログ、トレースが存在することを確認します。
OpenTelemetry データを Dynatrace に取り込む方法の背景が必要な場合は、 OpenTelemetry の概要ガイドを参照してください。
テレメトリが見つからないか、期待どおりに表示されない場合は、 OpenTelemetry のトラブルシューティング ガイドを参照してください。