共用方式為


容器深入解析記錄結構描述

容器資訊將其收集的日誌資料儲存在名為 ContainerLogV2 的資料表中,位於 Log Analytics 工作區。 本文說明了此資料表的結構描述及其設定選項。 它還將此資料表與舊版的 ContainerLog 資料表進行比較,並提供從中移轉的詳細資料。

表格比較

ContainerLogV2 是 CLI 2.54.0 版和更新版本的預設結構描述。 這是客戶在使用受管理的身份驗證啟用容器洞察時的預設資料表。 ContainerLogV2 可以使用資料收集設定,透過 CLI 2.51.0 版或更高版本明確加以啟用。

重要

ContainerLog 表格的支援將於 2026 年 9 月 30 日淘汰。

下表醒目提示使用 ContainerLogV2 和 ContainerLog 結構描述之間的主要差異。

功能差異 ContainerLog ContainerLogV2
結構描述 ContainerLog 的詳細資料。 ContainerLogV2 的詳細資料。
其他欄位是:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
入職培訓 只能透過 ConfigMap 進行設定。 可透過 ConfigMap 和 DCR 來設定。 3
定價 只與全價分析記錄相容。 除了分析記錄之外,還支援低成本基本記錄層。
查詢 必須對庫存表進行多次聯結操作,以完成標準查詢。 包含額外的 Pod 和容器中繼資料,以減少查詢複雜性和聯結作業。
多行 不支援的情況下,多行項目將被分割成多個行。 支援多行記錄,以允許多行輸出的合併單一項目。

1 如果 LogMessage 是有效的 JSON 格式,且具有名為 level 的索引鍵,則會使用其值。 否則,會使用 regex 型關鍵字比對來從 LogLevel 推斷出 LogMessage。 這種推論可能會導致一些錯誤分類。 LogLevel 是具有健康情況值 (例如 CRITICALERRORWARNINGINFODEBUGTRACEUNKNOWN) 的字串欄位。

2KubernetesMetadata 是一個透過 Kubernetes 中繼資料啟用的選擇性欄位。 此欄位的值為 JSON 格式,其中包含以下欄位:podLabelspodAnnotationspodUidImageImageTagImage repo

3 DCR 設定需要受控識別驗證

附註

LogMessage欄位是動態的,並支援內嵌 JSON 和純文字字串格式。 如果傳入 是有效的 JSON 或有效的純字串,則支援匯出至事件中樞和儲存體帳戶的LogMessage

如果 LogMessage 是格式錯誤的 JSON,則會內嵌這些記錄訊息並逸出。 根據預設,大於 16KB 的記錄訊息會被截斷。 啟用 多行記錄 後,會截斷大於 64KB 的記錄訊息。

啟用 ContainerLogV2 結構描述

使用叢集的資料收集規則 (DCR)ConfigMap 為叢集啟用 ContainerLogV2 結構描述。 如果兩個設定都已啟用,則會優先使用 ConfigMap。 僅當 DCR 和 ConfigMap 均明確設定為關閉時才會使用 ContainerLog 資料表。

啟用 ContainerLogsV2 結構描述之前,您應該評估您是否有任何警示規則依賴 ContainerLog 表格。 任何這類警示都必須更新,才能使用新的資料表。 執行下列 Azure Resource Graph 查詢以掃描參考 ContainerLog 資料表的警示規則。

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "ContainerLog"
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

Kubernetes 中繼資料和記錄篩選

Kubernetes 中繼資料和記錄篩選會使用額外的 Kubernetes 中繼資料來擴充 ContainerLogsV2 結構描述。 記錄篩選功能可為工作負載和平台容器提供篩選功能。 這些功能為您提供更豐富的內容並提高工作負載的可見度。

附註

Kubernetes 中繼資料和記錄篩選 Grafana 儀表板目前不支援基本記錄。

功能

  • 增強版的 ContainerLogV2 結構 當啟用 Kubernetes Logs 的中繼資料時,會在 ContainerLogV2 中新增一個 KubernetesMetadata 資料行,簡化記錄查詢以增強疑難排解功能,且無需與其他資料表連接。 此資料列中的欄位包括:PodLabelsPodAnnotationsPodUidImageImageIDImageRepoImageTag。 這些欄位增強了使用記錄查詢的疑難排解體驗,而無需與其他資料表連接。 如需啟用 Kubernetes 中繼資料功能的詳細資料,請參閱下文。

  • 記錄層級 此功能會將 LogLevel 資料行新增至 ContainerLogV2,包括以下可能的值:嚴重錯誤警告資訊偵錯追蹤未知。 這可以幫助您根據嚴重性等級來評估應用程式的健康情況。 新增 Grafana 儀表板後,您可以視覺化記錄層級隨時間變化的趨勢,並快速找出受影響的資源。

  • 用於視覺效果的 Grafana 儀表板 Grafana 儀表板提供了記錄層級的顏色編碼視覺效果,也提供了對記錄量、記錄速率、日誌記錄、記錄的深入解析。 您可以取得時間緊迫的分析、一段時間的記錄層級趨勢動態深入解析,以及重要的即時監視。 該儀表板也提供依電腦、Pod 和容器列出的詳細明細,有助於進行深入分析和精確的疑難排解。 如需安裝 Grafana 儀表板的相關詳細資料,請參閱下方。

  • 工作負載的註釋型記錄篩選 透過 Pod 註釋的有效率記錄篩選。 這可讓您專注於相關的資訊,而無需篩選不必要的資訊。 基於註釋的篩選功能讓您可以通過為 Pod 添加註釋來排除特定 Pod 和容器的日誌收集,這有助於顯著降低日誌分析成本。 如需設定註釋型篩選的詳細資料,請參閱註釋型記錄篩選

  • 平台記錄的 ConfigMap 型記錄篩選 (系統 Kubernetes 命名空間) 平台記錄會由系統 (或類似受限制的) 命名空間中的容器所發出。 預設情況下,系統命名空間中的所有容器記錄都會被排除,以將 Log Analytics 工作區中的資料成本降到最低。 不過,在特定的疑難排解案例中,系統容器的容器記錄扮演著至關重要的角色。 其中一個範例是 coredns 命名空間中的 kube-system 容器。

啟用 Kubernetes 中繼資料

重要

收集 Kubernetes 中繼資料需要受控識別驗證ContainerLogsV2

使用具有以下設定的 ConfigMap 來啟用 Kubernetes 中繼資料。 啟用 metadata_collection 時,預設會收集所有中繼資料欄位。 去掉註解 include_fields 以指定要收集的個別欄位。

[log_collection_settings.metadata_collection]
    enabled = true
    include_fields = ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]

幾分鐘後,KubernetesMetadata 資料行應包含在 ContainerLogV2 資料表的任何記錄查詢中,如下所示。

顯示 containerlogv2 的螢幕擷取畫面。

安裝 Grafana 儀表板

重要

如果您按照「啟用對 Kubernetes 叢集的監視」中的指導啟用了 Grafana,那麼您的 Grafana 執行個體應該已經可以存取您的 Azure 監視器工作區以取得 Prometheus 計量。 Kubernetes Logs 中繼資料儀表板也需要存取包含記錄資料的 Log Analytics 工作區。 請參閱「如何修改對 Azure 監視器的存取權限」,以取得向您的 Grafana 執行個體授與 Log Analytics 工作區的監視讀取者角色的指導。

將儀表板從 Grafana 元件庫的 ContainerLogV2 Dashboard 中匯入。 然後,您可以開啟儀表板並選取資料來源、訂用帳戶、資源群組、叢集、命名空間和標籤的值。

顯示 grafana 儀表板的螢幕擷取畫面。

附註

當您一開始載入 Grafana 儀表板時,您可能會看到因尚未選取變數而導致的錯誤。 若要防止這種情況重複發生,請在選取一組變數後儲存儀表板,使其在第一次開啟時變成預設值。

多行記錄

啟用多行記錄后,先前分割的容器記錄會合併在一起,並以單一項目傳送至 ContainerLogV2 表格。 使用 ConfigMap 啟用多行記錄,如使用 ConfigMap 在容器深入解析中設定資料收集中所述。

附註

configmap 現在具有語言規格選項,可讓您只選取您感興趣的語言。 在 configmap 的 [stacktrace_languages] 選項中編輯語言,即可啟用此功能。

局限性

  • 多行記錄僅限於整合使用 JAVA、Python、.NET 和 Go 之容器中的例外狀況堆疊追蹤。 其他多行日誌條目,包括自訂例外狀況和任意日誌訊息,不會合併在一起。

  • 如果記錄行在預設情況下大於 16KB,不會被容器執行階段截斷,則可以支援最多 64KB 的記錄行。

範例

已停用 Go 例外狀況堆疊追蹤的多行記錄

顯示已停用多行記錄的螢幕擷取畫面。

已啟用 Go 例外狀況堆疊追蹤的多行記錄

顯示已啟用多行的螢幕擷取畫面。

已啟用 JAVA 堆疊追蹤多行記錄

顯示已針對 JAVA 啟用多行的螢幕擷取畫面。

已啟用 Python 堆疊追蹤多行記錄

顯示已針對 Python 啟用多行的螢幕擷取畫面。

下一步