Log Analytics を使用して Azure Container Apps のログを監視する
Azure Container Apps は、コンテナー アプリのログを監視および分析するために、Azure Monitor Log Analytics と統合されています。 ログ監視ソリューションとして選んだ場合、Container Apps 環境には Log Analytics ワークスペースが含まれており、環境内で実行されているすべてのコンテナー アプリのシステム ログ データとアプリケーション ログ データを格納するための共通の場所として使用できます。
ログ エントリには、Azure portal から、または Azure CLI を使ってコマンド シェルから Log Analytics テーブルを照会することでアクセスできます。
Container Apps には 2 種類のログがあります。
- コンソール ログ。これはアプリによって出力されます。
- システム ログ。これは Container Apps サービスによって出力されます。
システム ログ
Container Apps サービスでは、コンテナー アプリ レベルでのシステム ログ メッセージが提供されます。 システム ログでは、次のメッセージが出力されます。
ソース | Type | メッセージ |
---|---|---|
Dapr | Info | dapr コンポーネント <component-name> がスコープ <dapr-component-scope> で正常に作成されました |
Dapr | Info | dapr コンポーネント <component-name> がスコープ <component-type> で正常に更新されました |
Dapr | Error | dapr コンポーネント <component-name> の作成中にエラーが発生しました |
ボリューム マウント | Info | ボリューム <volume-name> がリビジョン <revision-scope> に対して正常にマウントされました |
ボリューム マウント | Error | ボリューム <volume-name> のマウント中にエラーが発生しました |
ドメインのバインド | Info | ドメイン <domain> をコンテナー アプリ <container app name> に正常にバインドしました |
認証 | Info | アプリで認証が有効になっています。 認証構成を作成しています |
認証 | Info | 認証構成が正常に作成されました |
トラフィックの重み | Info | リビジョン <revision-name\> のトラフィックの重みを <percentage>%に設定しています |
リビジョンのプロビジョニング | Info | 新しいリビジョンを作成しています: <revision-name> |
リビジョンのプロビジョニング | Info | リビジョン <name> が正常にプロビジョニングされました |
リビジョンのプロビジョニング | Info | "ActiveRevisionsMode=Single" 以降の古いリビジョンを非アクティブ化しています |
リビジョンのプロビジョニング | Error | リビジョン <revision-name> のプロビジョニング中にエラーが発生しました。 ErrorCode: <[ErrImagePull]|[Timeout]|[ContainerCrashing]> |
システム ログ データには、ContainerAppSystemLogs_CL
テーブルを照会することでアクセスできます。 テーブルで最もよく使用される Container Apps 固有の列は以下の列です。
列 | 説明 |
---|---|
ContainerAppName_s |
コンテナー アプリ名 |
EnvironmentName_s |
Container Apps 環境名 |
Log_s |
ログ メッセージ |
RevisionName_s |
リビジョン名 |
コンソール ログ
コンソール ログは、コンテナー アプリと Dapr サイドカー内のコンテナーから送られる stderr
および stdout
メッセージから生成されます。 コンソール ログは、ContainerAppConsoleLogs_CL
テーブルを照会することで表示できます。
ヒント
適切に定義されたログ メッセージを使用してコードをインストルメント化すると、コードのパフォーマンスを把握し、問題をデバッグするのに役立ちます。 ベスト プラクティスの詳細については、「操作に合わせた設計」を参照してください。
ContainerAppConsoleLogs_CL で最もよく使用される Container Apps 固有の列には、以下の列が含まれます。
列 | 説明 |
---|---|
ContainerAppName_s |
コンテナー アプリ名 |
ContainerGroupName_g |
レプリカ名 |
ContainerId_s |
コンテナー識別子 |
ContainerImage_s |
コンテナー イメージ名 |
EnvironmentName_s |
Container Apps 環境名 |
Log_s |
ログ メッセージ |
RevisionName_s |
リビジョン名 |
Log Analytics を使用してログのクエリを実行する
Log Analytics は、ログ データの表示と分析に使用できる Azure portal のツールです。 Log Analytics を使用すると、Kusto クエリを作成し、結果の並べ替え、フィルター処理、グラフでの視覚化を行い、傾向を見つけて問題を特定することができます。 クエリ結果を対話的に操作したり、アラート、ダッシュボード、ブックなどの他の機能と一緒に使用したりできます。
Azure Portal
コンテナー アプリ ページのサイドバー メニューの [ログ] から Log Analytics を起動します。 [監視]>[ログ] から Log Analytics を開始することもできます。
ログは、[カスタム ログ] カテゴリの [テーブル] タブに一覧表示されているテーブルを使用して照会できます。このカテゴリのテーブルは、ContainerAppSystemlogs_CL
テーブルと ContainerAppConsoleLogs_CL
テーブルです。
次に示すのは、album-api という名前のコンテナー アプリのコンソール ログ エントリを表示する Kusto クエリです。
ContainerAppConsoleLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s
| take 100
次に示すのは、album-api という名前のコンテナー アプリのシステム ログ エントリを表示する Kusto クエリです。
ContainerAppSystemLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, EnvName=EnvironmentName_s, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s
| take 100
Log Analytics とログ クエリの詳細については、「Log Analytics のチュートリアル」を参照してください。
Azure CLI または PowerShell
Container Apps ログには、Azure CLI を使用してクエリを実行できます。
これらの Azure CLI クエリの例では、コンテナー アプリ名 "album-api" のログ レコードを格納しているテーブルを出力します。 テーブル列は、project
演算子の後のパラメーターによって指定されます。 $WORKSPACE_CUSTOMER_ID
変数には、Log Analytics ワークスペースの GUID が含まれています。
次の例では、ContainerAppConsoleLogs_CL
テーブルを照会します。
az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s, LogLevel_s | take 5" --out table
次の例では、ContainerAppSystemLogs_CL
テーブルを照会します。
az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppSystemLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s, LogLevel_s | take 5" --out table