このエントリは2024/12/05現在の情報に基づいています。将来の機能追加や変更に伴い、記載事項からの乖離が発生する発生する可能性があります。
問い合わせ
いつもの人から、Azure Container Apps (ACA) について問い合わせがあった。
いまACAに対して診断設定を構成しようとしているのだが、Azure Portalには診断設定を構成するための仕組みがないように見える。Azure Container Environment (ACE) では診断設定を構成する仕組みを確認済み。ACAのログ(
ContainerAppSystemLogs_CLとContainerAppConsoleLogs_CL)はACEの診断設定を構成してもしなくても取得できることは確認したのだが、ACAのメトリックはどうすればLog Analytics Workspaceに転送できるのか?
どういうことか?
Azure PortalでACAのページを見ると、ログもメトリックも確認できるが、Container Appsには診断設定が見つからない。

じゃあACEは、というと、これはログオプションでAzure Monitorを指定しない限り、診断設定は現れない。

診断設定で確かにメトリックを転送できるとはいえ、このメトリックはACEのメトリックであって、ACAのメトリックではない。具体的には、以下のドキュメントで、
Container Apps 環境では、この基本メトリックが提供されています。
Container Apps environments provides this basic metric.
と記載のある1個(ワークロード プロファイル ノード数 (プレビュー) / Workload Profile Node Count (Preview))だけを取得できる。
使用可能なメトリック / Available metrics
https://learn.microsoft.com/azure/container-apps/metrics#available-metrics

で、ACAの使用可能なメトリックはどうやればLog Analytics Workspaceに転送できるのか、という問い合わせをもらった次第。
解決策
現時点ではPortalから構成できないが、メトリックをLog Analytics Workspaceに転送するようにAzure CLIを使って診断設定を構成できる。具体的には、az monitor diagnostic-settings createを使う。
az monitor diagnostic-settings create
https://learn.microsoft.com/cli/azure/monitor/diagnostic-settings?view=azure-cli-latest#az-monitor-diagnostic-settings-create
以下のコマンドで呼び出す。必要に応じて、メトリックの収集間隔を構成できるが、タイムグレインの構成はREST APIのリファレンスを確認する必要がある(デフォルトは最小間隔の1分、PT1M)。
一番シンプルなコマンドは以下。
az monitor diagnostic-settings create \
-n <診断設定の名前> \
--resource <Resource ID、今回だとContainer AppsのResource ID> \
--metrics '[{"category": "AllMetrics","enabled": true}]' \
--workspace <転送先のLog Analytics WorkspaceのResource ID>
これで、AzureMetricsテーブルにメトリックが転送される。

今後Azure Portalに追加されることを願いつつ。。