共用方式為


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

容器深入解析會將所收集的記錄資料儲存在名為 ContainerLogV2 的表格中。 本文說明此表格的結構描述及其從舊版 ContainerLog 表格的比較和移轉。

重要

ContainerLogV2 是透過 CLI 2.54.0 版和更新版本的 ConfigMap 的預設結構描述。 對於透過使用 ARM、Bicep、Terraform、原則和入口網站上線的受控識別驗證,將容器深入解析上線的客戶,ContainerLogV2 是預設的擷取格式。 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,而且具有具名 層級的索引鍵,則會使用其值。 否則,我們會使用以 regex 為基礎的關鍵詞比對方法,從 LogMessage 本身推斷 LogLevel。 請注意,您可能會看到一些分類錯誤,因為此值是推斷的。

2KubernetesMetadata 是選擇性數據行,而且可以使用 Kubernetes 元數據功能來啟用此欄位的集合。 此欄位的值是 JSON,其中包含 podLabels、podAnnotations、podUid、Image、ImageTag 和 Image 存放庫字段。

3使用服務主體驗證型叢集的叢集不支援 DCR 設定。 若要使用此體驗, 請將叢集與服務主體移轉至受控識別

注意

如果傳入的 LogMessage 不是有效的 JSON,則不支援匯出至事件中樞和儲存體帳戶。 為了獲得最佳效能,建議您以 JSON 格式發出容器記錄。

評估對現有警示的影響

啟用 ContainerLogsV2 結構描述之前,您應該評估您是否有任何警示規則依賴 ContainerLog 表格。 任何這類警示都必須更新,才能使用新的數據表。

若要瀏覽參考 ContainerLog 表格的警示,請執行下列 Azure Resource Graph 查詢:

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

啟用 ContainerLogV2 結構描述

您可以使用叢集的資料收集規則 (DCR) 或 ConfigMap,為叢集啟用 ContainerLogV2 結構描述。 如果啟用這兩個設定,ConfigMap 會優先使用。 當 DCR 和 ConfigMap 明確設定為關閉時,Stdout 和 stderr 記錄只會內嵌至 ContainerLog 數據表。

Kubernetes 元數據和記錄篩選

Kubernetes 元數據和記錄篩選會使用更多 Kubernetes 元數據來增強 ContainerLogsV2 架構,例如 PodLabels、PodAnnotations、PodUid、Image、ImageID、ImageRepo 和 ImageTag。 此外,記錄 篩選 功能提供工作負載和平臺(即系統命名空間)容器的篩選功能。 有了這些功能,使用者就會獲得更豐富的內容,並改善工作負載的可見度。

主要功能

  • 使用 Kubernetes 元數據欄位增強的 ContainerLogV2 架構: Kubernetes 記錄元數據引進了其他選擇性元數據欄位,可增強使用簡單 Log Analytics 查詢的疑難解答體驗,並移除與其他數據表聯結的需求。 這些欄位包含基本資訊,例如 “PodLabels”、“PodAnnotations”、“PodUid”、“ImageID”、“ImageRepo” 和 “ImageTag”。 藉由讓此內容可供使用,使用者可以快速進行疑難解答,並快速找出問題。

  • 自定義的包含清單組態: 用戶可以透過編輯 configmap 來量身打造想要查看的新元數據字段。 請注意,啟用 時 metadata_collection ,預設會收集所有元數據欄位,而且如果您想要選取特定欄位,請取消批 include_fields 注並指定需要收集的欄位。

顯示元數據欄位的螢幕快照。

  • 增強的 ContainerLogV2 架構與記錄層級: 用戶現在可以根據色彩編碼嚴重性層級來評估應用程式健康情況,例如 CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE 或 UNKNOWN。 這是事件回應和主動式監視的重要工具。 藉由以可視化方式區分嚴重性層級,使用者可以快速找出受影響的資源。 色彩編碼系統可簡化調查程式,並讓用戶藉由選取面板進一步向下切入,以取得進一步偵錯的探索體驗。 不過,請務必注意,這項功能僅適用於使用 Grafana 時。 如果您使用Log Analytics工作區,LogLevel 只是 ContainerLogV2 資料表中的另一個數據行。

  • 工作負載的註釋型記錄篩選: 透過Pod註釋有效率的記錄篩選技術。 用戶可以專注於相關信息,而不需篩選雜訊。 註釋型篩選可讓用戶藉由標註 Pod 來排除特定 Pod 和容器的記錄收集,這有助於大幅降低記錄分析成本。

  • 平台記錄的 ConfigMap 型記錄篩選(系統 Kubernetes 命名空間): 平台記錄是由系統 (或類似限制的) 命名空間中的容器所發出。 根據預設,系統會排除系統命名空間中的所有容器記錄,以將Log Analytics成本降到最低。 不過,在特定疑難解答案例中,系統容器的容器記錄扮演重要角色。 例如,請考慮 kube-system 命名空間內的 coredns 容器。 若要從 coredns 容器窗體 kube-system 中獨佔收集記錄 (stdout 和 stderr),您可以在 configmap啟用下列設定。

顯示篩選欄位的螢幕快照。

  • 適用於視覺效果的 Grafana 儀錶板: Grafana 儀錶板不僅會顯示記錄層級的色彩編碼視覺效果,範圍從 CRITICAL 到 UNKNOWN,也會深入探討記錄磁碟區、記錄速率、記錄記錄、記錄檔。 使用者可以取得時間敏感分析、一段時間記錄層級趨勢的動態深入解析,以及重要的實時監視。 我們也提供計算機、Pod 和容器的詳細細目,其可提供深入分析和精確疑難解答功能。最後,在新記錄數據表體驗中,使用者可以使用展開檢視來檢視深度詳細數據,並檢視每個數據行中的數據,並放大他們想要查看的資訊。

以下是展示 Grafana 儀錶板的影片:

如何啟用 Kubernetes 元數據和記錄篩選

必要條件

  1. 移轉至受控識別驗證。 深入了解

  2. 確定已啟用 ContainerLogV2。 受控識別驗證叢集預設會啟用此架構。 如果沒有, 請啟用 ContainerLogV2 架構

限制

ContainerLogV2 Grafana 儀錶板不支援 ContainerLogV2 數據表上的基本記錄 SKU。

啟用 Kubernetes 元數據

  1. 下載 configmap,並將設定從 false 修改為 true,如下列螢幕快照所示。 請注意,預設會收集所有支援的元數據欄位。 如果您想要收集特定欄位,請在 中 include_fields指定必要的欄位。

顯示啟用元數據欄位的螢幕快照。

  1. 套用 ConfigMap。 請參閱 設定 configmap 以深入瞭解部署和設定 ConfigMap。

  2. 幾分鐘后,數據應該會使用 Kubernetes Logs Metadata 流入您的 ContainerLogV2 數據表,如下列螢幕快照所示。

顯示 containerlogv2 的螢幕快照。

上線至 Grafana 儀錶板體驗

  1. 在 [深入解析] 索引卷標下,選取 [監視設定] 並上線至具有 10.3.4+ 版的 Grafana 儀錶板

顯示 grafana 上線的螢幕快照。

  1. 檢查訪問控制 (IAM) 以確保您有一個 Grafana 管理員/編輯器/讀取者角色。 如果沒有,請加以新增。

顯示 grafana 角色的螢幕快照。

  1. 請確定您的 Grafana 實例可以存取 Azure Logs Analytics(LA) 工作區。 如果它沒有存取權,您必須將 La 工作區的 Grafana 實例監視讀取者角色存取權授與 Grafana 實例。

顯示 grafana 的螢幕快照。

  1. 流覽至 Grafana 工作區,然後從 Grafana 資源庫匯 入 ContainerLogV2 儀錶板

  2. 選取 DataSource、訂用帳戶、ResourceGroup、叢集、命名空間和標籤的資訊。 然後,儀錶板會填入如下螢幕快照中所述。

顯示 grafana 儀錶板的螢幕快照。

注意

當您一開始載入 Grafana 儀錶板時,可能會因為尚未選取變數而擲回一些錯誤。 若要防止這種情況重複執行,請在選取一組變數之後儲存儀錶板,讓它在第一次開啟時變成預設值。

啟用註釋型篩選

請遵循下列所述的步驟來啟用批注型篩選。 發佈相關的篩選文件之後,請在這裡尋找連結

  1. 下載 configmap並將設定從 false 修改為 true,如下列螢幕快照所示。

顯示批注的螢幕快照。

  1. 套用 ConfigMap。 請參閱 設定 configmap 以深入瞭解部署和設定 ConfigMap。

  2. 在工作負載Pod規格上新增必要的批注。下表醒目提示不同的可能Pod批註和其用途的描述。

註釋 描述
fluentbit.io/exclude: "true" 排除 Pod 中所有容器上的 stdout 和 stderr 數據流
fluentbit.io/exclude_stdout: "true" 只排除Pod中所有容器上的 stdout 資料流
fluentbit.io/exclude_stderr: "true" 只排除 Pod 中所有容器上的 stderr 數據流
fluentbit.io/exclude_container1: "true" 只針對 Pod 中的 container1 排除兩個 stdout 和 stderr 數據流
fluentbit.io/exclude_stdout_container1: "true" 只針對 Pod 中的 container1 排除 stdout

注意

這些批注是以 Fluent 位為基礎。 如果您使用自己的 Fluent-bit 型記錄收集解決方案搭配 Kubernetes 外掛程式篩選和註釋型排除,它會停止從 Container Insights 和您的解決方案收集記錄。

以下是 Pod 規格中的註釋範例 fluentbit.io/exclude: "true"

apiVersion: v1 
kind: Pod 
metadata: 
 name: apache-logs 
 labels: 
  app: apache-logs 
 annotations: 
  fluentbit.io/exclude: "true" 
spec: 
 containers: 
 - name: apache 
  image: edsiper/apache_logs 

平台記錄的 ConfigMap 型記錄篩選 (系統 Kubernetes 命名空間)

  1. 下載 configmap 並修改 與 相關的collect_system_pod_logsexclude_namespaces設定。

例如,若要在 kube-system 命名空間中收集 coredns 容器的 stdout 和 stderr 記錄,請確定 kube-system 命名空間不在 中 exclude_namespaces ,此功能僅限於下列系統命名空間:kube-system、gatekeeper-system、calico-system、azure-arc、kube-public 和 kube-node-lease 命名空間。

顯示篩選欄位的螢幕快照。

  1. 套用 ConfigMap。 請參閱 設定 configmap 以深入瞭解部署和設定 ConfigMap。

容器深入解析的多行記錄

啟用多行記錄后,先前分割的容器記錄會合併在一起,並以單一項目傳送至 ContainerLogV2 表格。 如果合併的記錄行大於 64 KB,則會因為 Log Analytics 工作區限制而遭到截斷。 這項功能也支援 .NET、Go、Python 和 Java 堆疊追蹤,其會顯示為 ContainerLogV2 表格中的單一項目。 使用 ConfigMap 啟用多行記錄,如使用 ConfigMap 在容器深入解析中設定資料收集中所述。

注意

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

下列螢幕擷取畫面會顯示 Go 例外狀況堆疊追蹤的多行記錄:

多行記錄已停用

顯示停用多行記錄的螢幕快照。

多行記錄已啟用

顯示已啟用多行的螢幕快照。

Java 堆疊追蹤

顯示針對 Java 啟用多行的螢幕快照。

Python 堆疊追蹤

顯示針對 Python 啟用多行的螢幕快照。

下一步