Azure Container Apps 中的記錄和計量
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於:✅ 基本/標準 ✅ 企業
當您從 Azure Spring Apps 轉換至 Azure Container Apps 時,您會發現類似的可觀察性功能,但有一些主要差異。 本文強調這些差異,並說明如何在 Azure Container Apps 中監視您的應用程式。
必要條件
- 現有的 Azure 容器應用程式。 如需詳細資訊,請參閱快速入門:使用 Azure 入口網站部署您的第一個容器應用程式。
- Azure CLI。
記錄
設定記錄選項
Azure Container Apps 可讓您管理 Azure Container Apps 環境中的記錄。
您可以將記錄儲存在 Azure Log Analytics 和 Azure 監視器中。 如果您選擇 Azure 監視器,您可以在環境設定中找到診斷設定功能表,類似於 Azure Spring Apps 中的診斷設定功能表。
當您使用 Azure CLI 建立環境時,如下列範例所示,會布建自動產生的 Log Analytics 工作區。
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--location eastus2
您也可以使用下列命令來建立具有現有 Log Analytics 工作區的環境:
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--logs-workspace-id myLogsWorkspaceID \
--logs-workspace-key myLogsWorkspaceKey \
--location eastus2
分析記錄
Azure Container Apps 可讓您從容器控制台串流記錄。 下列清單描述記錄的主要差異:
控制台記錄:針對控制台記錄,請查詢
ContainerAppConsoleLogs_CL
Azure Container Apps 中的數據表,而不是ApplicationConsole
Azure Spring Apps 中使用的數據表。系統記錄:Azure Spring Apps 提供
SystemLogs
Config Server、Service Registry、API 入口網站、應用程式組態服務和 Spring Cloud 閘道。 在 Azure Container Apps 中,您必須將這些元件布建為個別的應用程式,並在資料表中ContainerAppConsoleLogs_CL
查詢其記錄,並在查詢中指定每個應用程式的名稱。建置記錄:使用 Paketo Buildpacks 從本機組建建置記錄不適用於 Azure Container Apps,這與 Azure Spring Apps 不同。
檢視記錄
根據預設,Azure Container Apps 會將記錄直接傳送至 Azure Log Analytics。 不過,如果您選擇將記錄儲存在 Azure 監視器中,數據表和數據行名稱可能會有所不同。 在 Azure 監視器中,數據表和數據行名稱不包含後綴。 例如,針對儲存在 Azure 監視器中的記錄製作查詢時,請使用 ContainerAppConsoleLogs
而非 ContainerAppConsoleLogs_CL
和 Log
Log_s
。
若要在 Azure Container Apps 中檢視主控台記錄,請使用下列查詢作為範例:
ContainerAppConsoleLogs_CL
| limit 50
Azure Log Analytics 會使用 Kusto 引擎執行,以便查詢記錄以進行分析。 如需使用 Kusto 查詢記錄的簡介,請參閱 Log Analytics 教學課程。
顯示應用程式記錄
若要檢閱應用程式記錄清單,請依時間排序,其中顯示最新的記錄,請使用下列查詢:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc
顯示包含錯誤或例外狀況的記錄專案
若要檢閱提及錯誤或例外狀況的未排序記錄專案,請使用下列查詢:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"
使用此查詢來尋找錯誤,或修改查詢字詞以尋找特定的錯誤碼或例外狀況。
顯示應用程式在過去一小時內回報的錯誤和例外狀況數目
若要建立餅圖,以顯示應用程式在過去一小時內記錄的錯誤和例外狀況數目,請使用下列查詢:
ContainerAppConsoleLogs_CL
| where TimeGenerated > ago(1h)
| where Log_s contains "error" or Log_s contains "exception"
| summarize count_per_app = count() by ContainerAppName_s
| sort by count_per_app desc
| render piechart
顯示 Spring Cloud 閘道記錄
若要檢閱 Spring Cloud 閘道記錄的記錄專案,請使用下列查詢:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
顯示 Eureka 伺服器記錄
若要檢閱 Eureka 伺服器記錄的記錄專案,請使用下列查詢:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
計量
下表對應 Azure Spring Apps 與 Azure Container Apps 之間的計量:
常見
Azure Spring Apps 計量名稱 | Azure Container Apps 計量名稱 |
---|---|
應用程式 CPU 使用量 | N/A |
應用程式記憶體使用量 | N/A |
中的應用程式網路 | N/A |
應用程式網路輸出 | N/A |
錯誤指標
Azure Spring Apps 計量名稱 | Azure Container Apps 計量名稱 |
---|---|
tomcat.global.error |
N/A |
效能計量
Azure Spring Apps 計量名稱 | Azure Container Apps 計量名稱 |
---|---|
system.cpu.usage |
CPU 使用量百分比 (預覽) |
process.cpu.usage |
N/A |
應用程式記憶體使用量 | N/A |
jvm.memory.committed |
jvm.memory.committed |
jvm.memory.used |
jvm.memory.used |
jvm.memory.max |
N/A |
其他 JVM 計量 | N/A |
.NET 效能計量
Azure Spring Apps 計量名稱 | Azure Container Apps 計量名稱 |
---|---|
CPU 使用量 | CPU 使用量百分比 (預覽) |
工作集 | 記憶體工作集位元組 |
GC 堆積大小 | N/A |
Gen 0 GC 計數 | N/A |
其他 GC 計量 | N/A |
要求計量
Azure Spring Apps 計量名稱 | Azure Container Apps 計量名稱 |
---|---|
tomcat.global.sent |
N/A |
tomcat.global.request.total.count |
要求 |
.NET 要求計量
Azure Spring Apps 計量名稱 | Azure Container Apps 計量名稱 |
---|---|
每秒要求數 | N/A |
總要求數 | 要求 |
會話計量
Azure Spring Apps 計量名稱 | Azure Container Apps 計量名稱 |
---|---|
tomcat.sessions.active.max |
N/A |
tomcat.sessions.alive.max |
N/A |
Azure 容器應用程式中 Java 應用程式的 Java 計量
如果您選擇 Java 作為 Azure Container Apps 的開發堆疊,監視 Java 虛擬機 (JVM) 計量對於確保應用程式的健康情況和效能至關重要。 如需詳細資訊,請參閱 Azure Container Apps 中 Java 應用程式的 Java 計量。
受管理的元件
如需受控元件監視數據,請參閱下列文章:
整合
Azure Container Apps 提供數個內建的可觀察性功能,可協助您監視和診斷應用程式的狀態。 不過,如果您想要使用 Azure 監視器 Application Insights 或其他應用程式效能監視 (APM) 代理程式,您必須將檢測新增至應用程式程式代碼。
與應用程式效能監視整合
如需與 Azure 監視器 Application Insights 或其他 API 的整合,請參閱 將應用程式效能監視整合到容器映像中。
OpenTelemetry 代理程式 (預覽)
您可以使用 OpenTelemetry 數據代理程式搭配 Azure Container Apps 環境,將 OpenTelemetry 格式的可觀察性數據傳送至 Azure 監視器 Application Insights、Datadog 或任何 OTLP 兼容端點等目的地。 受控代理程式可讓您變更目的地端點,而不需手動執行或重新設定代理程式,來簡化設定。 若要進行設定,請使用ARM範本、Bicep 或 Azure CLI 在容器環境中設定代理程式,並安裝 OpenTelemetry SDK 並檢測程式代碼以進行計量、記錄或追蹤,以準備您的應用程式。 請務必事先設定目的地服務,例如 Application Insights。 每個目的地都有特定需求,且代理程式只有在正確設定和檢測時才會傳送數據。 如需詳細資訊,請參閱 收集及讀取 Azure Container Apps 中的 OpenTelemetry 數據。
自定義儀錶板和警示
當您在 Azure Container Apps 上部署應用程式時,自定義儀錶板可以依賴兩種不同的數據源方法:
應用程式整合的 APM 代理程式:如果您在建置程式期間將第三方 APM 代理程式整合至應用程式,這些代理程式會將計量和記錄直接傳送至 APM 平臺。 在此情況下,只要應用程式程式代碼保持不變,就不需要修改儀錶板。
以 Azure 監視器為基礎的儀錶板:如果您的儀錶板使用來自 Azure 監視器的計量和記錄,例如,透過 Application Insights API、Azure 事件中樞 或 Azure 儲存體 ,您可能需要更新它們以反映 Azure Container Apps 特定的計量名稱、命名空間或記錄結構。 請務必根據 Azure Container Apps 特定的計量對應和數據結構來檢閱及更新您的儀錶板。
請仔細確認您的儀錶板設定,以確保在轉換至 Azure Container Apps 之後保持正確。
疑難排解
Azure Container Apps 不提供 API 來產生 Java 應用程式的堆積傾印或線程傾印。 若要建立這些傾印,您必須透過主控台連線到容器應用程式。 然後,使用 jmap
或 jstack
命令在容器內產生傾印檔案。 之後,請將產生的檔案複製到本機計算機以進行進一步分析。
您也可以使用 jcmd
命令來執行相同的作業,並在執行中的應用程式中啟動 Java Flight Recorder (JFR)。 如需如何透過主控台存取容器應用程式的詳細資訊,請參閱 連線到 Azure Container Apps 中的容器控制台。
已知的限制
- 結構化記錄:Azure Container Apps 不支援結構化應用程序記錄。 如果您的應用程式記錄遵循 Azure Spring Apps 架構,則完整的 JSON 字串會出現在的數據
ContainerAppConsoleLogs_CL
行中Log_s
。 - 輸入記錄:雖然 Azure Spring Apps 有內建的輸入存取記錄,但 Azure Container Apps 則不會。 您必須在應用程式程式代碼中實作存取記錄,以擷取此數據。
- Azure Container Apps 不提供應用程式生命週期事件。
- Azure Container Apps 沒有輸入計量的內建支援。 您必須在應用程式中實作自訂追蹤。