容器深入解析記錄結構描述
容器深入解析會將它收集的記錄資料儲存在 Log Analytics 工作區中名為 ContainerLogV2 的資料表中。 本文說明了此資料表的結構描述及其設定選項。 它還將此資料表與舊版的 ContainerLog 資料表進行比較,並提供從中移轉的詳細資料。
表格比較
ContainerLogV2 是 CLI 2.54.0 版和更新版本的預設結構描述。 這是透過受控識別驗證將容器深入解析上線的客戶的預設資料表。 ContainerLogV2 可以使用資料收集設定,透過 CLI 2.51.0 版或更高版本明確加以啟用。
重要
ContainerLog 表格的支援將於 2026 年 9 月 30 日淘汰。
下表醒目提示使用 ContainerLogV2 和 ContainerLog 結構描述之間的主要差異。
功能差異 | ContainerLog | ContainerLogV2 |
---|---|---|
結構描述 | ContainerLog 的詳細資料。 | ContainerLogV2 的詳細資料。 其他資料行為: - ContainerName - PodName - PodNamespace - LogLevel 1- KubernetesMetadata 2 |
登入 | 只能透過 ConfigMap 進行設定。 | 可透過 ConfigMap 和 DCR 來設定。 3 |
定價 | 只與全價分析記錄相容。 | 除了分析記錄之外,還支援低成本基本記錄層。 |
查詢 | 建立自我聯結通常需要多重聯結條件。 | 包含額外的 Pod 和容器中繼資料,以減少查詢複雜性和聯結作業。 |
多行 | 不支援多行項目會分割成多個列。 | 支援多行記錄,以允許多行輸出的合併單一項目。 |
1 如果 LogMessage
是有效的 JSON 格式,且具有名為 level
的索引鍵,則會使用其值。 否則,會使用 regex 型關鍵字比對來從 LogMessage
推斷出 LogLevel
。 這種推論可能會導致一些錯誤分類。 LogLevel
是具有健康情況值 (例如 CRITICAL
、ERROR
、WARNING
、INFO
、DEBUG
、TRACE
或 UNKNOWN
) 的字串欄位。
2 KubernetesMetadata
是透過 Kubernetes 中繼資料啟用的選用資料行。 此欄位的值為 JSON 格式,其中包含以下欄位:podLabels
、podAnnotations
、podUid
、Image
、ImageTag
和 Image repo
。
3 DCR 設定需要受控識別驗證。
注意
如果傳入的 LogMessage
不是有效的 JSON 格式,則不支援匯出至事件中樞和儲存體帳戶。 為了獲得最佳效能,請以 JSON 格式發出容器記錄。
啟用 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 中繼資料時,它會將資料行新增至名為
KubernetesMetadata
的ContainerLogV2
,以透過簡單的記錄查詢來增強疑難排解能力,且無需與其他資料表進行連接。 此資料列中的欄位包括:PodLabels
、PodAnnotations
、PodUid
、Image
、ImageID
、ImageRepo
、ImageTag
。 這些欄位增強了使用記錄查詢的疑難排解體驗,而無需與其他資料表連接。 如需啟用 Kubernetes 中繼資料功能的詳細資料,請參閱下文。記錄層級 此功能會將
LogLevel
資料行新增至 ContainerLogV2,包括以下可能的值:嚴重、錯誤、警告、資訊、偵錯、追蹤或未知。 這可以幫助您根據嚴重性等級來評估應用程式的健康情況。 新增 Grafana 儀表板後,您可以視覺化記錄層級隨時間變化的趨勢,並快速找出受影響的資源。用於視覺效果的 Grafana 儀表板 Grafana 儀表板提供了記錄層級的顏色編碼視覺效果,也提供了對記錄量、記錄速率、日誌記錄、記錄的深入解析。 您可以取得時間緊迫的分析、一段時間的記錄層級趨勢動態深入解析,以及重要的即時監視。 該儀表板也提供依電腦、Pod 和容器列出的詳細明細,有助於進行深入分析和精確的疑難排解。 如需安裝 Grafana 儀表板的相關詳細資料,請參閱下方。
工作負載的註釋型記錄篩選 透過 Pod 註釋的有效率記錄篩選。 這可讓您專注於相關的資訊,而無需篩選不必要的資訊。 註釋型篩選可讓您藉由註釋 Pod 來排除特定 Pod 和容器的記錄收集,這有助於大幅降低記錄分析成本。 如需設定註釋型篩選的詳細資料,請參閱註釋型記錄篩選。
平台記錄的 ConfigMap 型記錄篩選 (系統 Kubernetes 命名空間) 平台記錄會由系統 (或類似受限制的) 命名空間中的容器所發出。 預設情況下,系統命名空間中的所有容器記錄都會被排除,以將 Log Analytics 工作區中的資料成本降到最低。 不過,在特定的疑難排解案例中,系統容器的容器記錄扮演著至關重要的角色。 其中一個範例是
kube-system
命名空間中的coredns
容器。
啟用 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
資料表的任何記錄查詢中,如下所示。
安裝 Grafana 儀表板
重要
如果您按照「啟用對 Kubernetes 叢集的監視」中的指導啟用了 Grafana,那麼您的 Grafana 執行個體應該已經可以存取您的 Azure 監視器工作區以取得 Prometheus 計量。 Kubernetes Logs 中繼資料儀表板也需要存取包含記錄資料的 Log Analytics 工作區。 請參閱「如何修改對 Azure 監視器的存取權限」,以取得向您的 Grafana 執行個體授與 Log Analytics 工作區的監視讀取者角色的指導。
從位於 ContainerLogV2 Dashboard 的 Grafana 資源庫中匯入儀表板。 然後,您可以開啟儀表板並選取資料來源、訂用帳戶、資源群組、叢集、命名空間和標籤的值。
注意
當您一開始載入 Grafana 儀表板時,您可能會看到因尚未選取變數而導致的錯誤。 若要防止這種情況重複發生,請在選取一組變數後儲存儀表板,使其在第一次開啟時變成預設值。
多行記錄
啟用多行記錄后,先前分割的容器記錄會合併在一起,並以單一項目傳送至 ContainerLogV2 表格。 如果合併的記錄行大於 64 KB,則會因為 Log Analytics 工作區限制而遭到截斷。 這項功能也支援 .NET、Go、Python 和 Java 堆疊追蹤,其會顯示為 ContainerLogV2 表格中的單一項目。 使用 ConfigMap 啟用多行記錄,如使用 ConfigMap 在容器深入解析中設定資料收集中所述。
注意
configmap 現在具有語言規格選項,可讓客戶只選取其感興趣的語言。 在 configmap 的 [stacktrace_languages] 選項中編輯語言,即可啟用此功能。
下列螢幕擷取畫面會顯示 Go 例外狀況堆疊追蹤的多行記錄:
多行記錄已停用
多行記錄已啟用
Java 堆疊追蹤
Python 堆疊追蹤