この構成ガイドでは、マネージド OpenTelemetry エージェントを使用してログ、トレース、メトリックを Elastic に転送するようにAzure Container Appsを構成する方法について説明します。
マネージド OpenTelemetry エージェントの詳細については、Azure Container Apps の OpenTelemetry エージェント を参照してください。
このガイドでは、以下の方法について説明します。
- Elastic インジェストトークンを作成する。
- Bicepまたは Azure ポータルを使用して Elastic OTLP 変換先を構成します。
- 必要なアプリ環境変数を構成します。
- 既存の Container Apps 環境とアプリに構成の更新を適用します。
- Elastic でテレメトリを確認します。
Prerequisites
- Azure サブスクリプション
- Elastic アカウントと、OTLP 取り込みに対応した対象のデプロイまたはプロジェクト。
- Azure CLIインストールされ、Azure アカウントにサインインします。
- Azure Container Apps CLI 拡張機能がインストールされています (Bicepの場合)。
az extension add --name containerapp --upgrade
Elastic の取り込みトークンを作成する
ターゲットデプロイの OpenTelemetry データを取り込むことができる Elastic API キーを作成します。
必要なアクセス許可により、次のシグナルのテレメトリ データを書き込める必要があります。
- ログの取り込み/書き込み
- トレースの取り込み/書き込み
- メトリックの取り込み/書き込み
トークンのアクセス許可と API キーに関するプロバイダー ガイダンスについては、 Elastic API キーに関するセクションを参照してください。
OpenTelemetry の送信先を設定する
Container Apps 環境で Elastic を OTel エンドポイントとして構成するには、次のいずれかのオプションを使用します。
Important
マネージド OpenTelemetry の送信先を構成しても、テレメトリーが自動的に生成されるわけではありません。 OpenTelemetry SDK を使用してトレース、メトリック、ログを出力するには、アプリケーションが既にインストルメント化されている必要があります。
デプロイ用の CLI 変数を設定します。
$RESOURCE_GROUP = "<RESOURCE_GROUP_NAME>"
$ELASTIC_OTLP_ENDPOINT = "https://<YOUR_ELASTIC_ENDPOINT>:443"
$ELASTIC_API_KEY = "<ELASTIC_API_KEY_WITHOUT_PREFIX>"
Elastic OTLP ベース エンドポイントの形式を使用します。
https://<YOUR_ELASTIC_ENDPOINT>:443
承認トークン ヘッダー形式を使用します。
- ヘッダー キー:
Authorization - ヘッダー値:
ApiKey <TOKEN>
次のマネージド環境リソースの例を使用して、宛先ルーティングを構成します。
@secure()
param elasticApiKey string
param elasticOtlpEndpoint string = 'https://<YOUR_ELASTIC_ENDPOINT>:443'
var elasticDestinationName = 'elastic-otlp'
var elasticAuthHeaderValue = 'ApiKey ${elasticApiKey}'
resource environment 'Microsoft.App/managedEnvironments@2026-03-02-preview' = {
name: '<MANAGED_ENVIRONMENT_NAME>'
location: '<REGION>'
properties: {
openTelemetryConfiguration: {
destinationsConfiguration: {
otlpConfigurations: [
{
name: elasticDestinationName
endpoint: elasticOtlpEndpoint
protocol: 'http'
insecure: false
headers: [
{
key: 'Authorization'
value: elasticAuthHeaderValue
}
]
}
]
}
tracesConfiguration: {
destinations: [
elasticDestinationName
]
}
logsConfiguration: {
destinations: [
elasticDestinationName
]
}
metricsConfiguration: {
destinations: [
elasticDestinationName
]
}
}
}
}
このアプリ リソースの例を使用して、必要なアプリ環境変数を設定します。
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_TEMPORALITY_PREFERENCE'
value: 'cumulative'
}
]
}
]
}
}
}
リポジトリ ルートからBicep構成を適用します。
az deployment group create `
--resource-group $RESOURCE_GROUP `
--template-file infra/main.bicep `
--parameters @infra/main.parameters.json `
--parameters elasticOtlpEndpoint="$ELASTIC_OTLP_ENDPOINT" `
--parameters elasticApiKey="$ELASTIC_API_KEY"
これで、テレメトリを Elastic に送信するようにコンテナー アプリが構成されました。
Elastic でテレメトリを確認する
構成後、ログ、トレース、メトリックがアプリケーションから到着したことを確認し、予想されるサービス ID にマップします。
ワークフローに合ったエラスティック ビューを使用します。
Elastic での探索と分析の詳細については、 Elastic Observability のドキュメントを参照してください。