分享方式:


使用 Log Analytics 監視 Azure 容器應用程式中的記錄

Azure 容器應用程式會與 Azure 監視器 Log Analytics 整合,以監視和分析容器應用程式的記錄。 選取 Azure Container Apps 作為記錄監視解決方案時,Container Apps 環境會包含 Log Analytics 工作區,以提供一個通用位置用來儲存環境中執行之所有容器應用程式的系統和應用程式記錄資料。

透過 Azure 入口網站或使用 Azure CLI 命令殼層查詢 Log Analytics 資料表,即可存取記錄項目。

Container Apps 有兩種類型的記錄。

  • 應用程式發出的主控台記錄。
  • 由 Container Apps 服務發出的系統記錄檔。

系統記錄

Container Apps 服務會提供容器應用程式層級的系統記錄檔訊息。 系統記錄檔會發出下列訊息:

來源 類型 訊息
Dapr 資訊 已成功建立 Dapr 元件 <component-name>,範圍為 <dapr-component-scope>
Dapr 資訊 已成功更新 Dapr 元件 <component-name>,範圍為 <component-type>
Dapr 錯誤 建立 Dapr 元件 <component-manme> 時發生錯誤
磁碟區裝載 資訊 已成功裝載 <revision-scope> 修訂的 <volume-name> 磁碟區
磁碟區裝載 錯誤 裝載 <volume-name> 磁碟區時發生錯誤
網域繫結 資訊 成功將 <domain> 網域繫結至 <container app name> 容器應用程式
驗證 資訊 在應用程式上啟用驗證。 正在建立驗證設定
驗證 資訊 已成功建立驗證設定
流量加權 資訊 設定 <revision-name\> 修訂的流量加權 <percentage>%
修訂佈建 資訊 正在建立新的修訂:<revision-name>
修訂佈建 資訊 成功佈建修訂 <name>
修訂佈建 資訊 停用自 'ActiveRevisionsMode=Single' 以後的舊修訂
修訂佈建 錯誤 在佈建 <revision-name> 時發生錯誤。 ErrorCode:<[ErrImagePull]|[Timeout]|[ContainerCrashing]>

查詢 ContainerAppSystemLogs_CL 資料表即可存取系統記錄檔資料。 資料表中最常使用的 Container Apps 特定資料行如下:

資料行 描述
ContainerAppName_s 容器應用程式名稱
EnvironmentName_s 容器應用程式環境名稱
Log_s 記錄訊息
RevisionName_s 修訂名稱

主控台記錄

主控台記錄源自容器應用程式和 Dapr sidecars 中容器的 stderrstdout 訊息。 您可以透過查詢 ContainerAppConsoleLogs_CL 資料表來檢視主控台記錄。

提示

使用定義完善的記錄訊息來檢測程式碼,可協助您了解程式碼的執行情形並偵錯問題。 若要深入了解最佳做法,請參閱為作業而設計

ContainerAppConsoleLogs_CL include 中最常使用的 Container Apps 特定資料行:

資料行 描述
ContainerAppName_s 容器應用程式名稱
ContainerGroupName_g 複本名稱
ContainerId_s 容器識別碼
ContainerImage_s 容器映像名稱
EnvironmentName_s 容器應用程式環境名稱
Log_s 記錄訊息
RevisionName_s 修訂名稱

使用記錄分析查詢記錄

Log Analytics 是 Azure 入口網站中的工具,可用來檢視和分析記錄資料。 使用 Log Analytics,您可以撰寫 Kusto 查詢,然後排序、篩選並在圖表中視覺化呈現結果,以找出趨勢並識別問題。 您可以透過互動方式處理查詢結果,或配合其他功能使用這些結果,例如警示、儀表板和活頁簿。

Azure 入口網站

在容器應用程式頁面上,從提要欄位功能表的 [記錄] 啟動 Log Analytics。 您也可以從監視器>記錄啟動 Log Analytics。

您可以使用 CustomLogs 類別「資料表」索引標籤中列出的資料表來查詢記錄。此類別中的資料表是 ContainerAppSystemlogs_CLContainerAppConsoleLogs_CL 資料表。

Screenshot of the Log Analytics custom log tables.

以下是 Kusto 的查詢,查詢結果會顯示名為 album-api 之容器應用程式的主控台記錄項目。

ContainerAppConsoleLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s
| take 100

以下是 Kusto 的查詢,查詢結果會顯示名為 album-api 之容器應用程式的系統記錄檔項目。

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

您可以使用 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

下一步