容器见解日志架构

容器见解将其收集的日志数据存储在名为 ContainerLogV2 的表中。 本文介绍此表的架构及其与旧 ContainerLog 表的比较和迁移。

重要

对于 CLI 2.54.0 及更高版本,ContainerLogV2 将通过 ConfigMap 成为默认架构。 对于使用 ARM、Bicep、Terraform、Policy 和门户加入功能通过托管标识身份验证加入容器见解的客户,ContainerLogV2 将是默认引入格式。 ContainerLogV2 可以使用数据收集设置通过 CLI 2.51.0 或更高版本实现显式启用。

将于 2026 年 9 月 30 日停止支持 ContainerLog 表

比较表

下表突出显示了使用 ContainerLogV2 和 ContainerLog 架构之间的主要区别。

功能差异 ContainerLog ContainerLogV2
架构 ContainerLog 的详细信息。 ContainerLogV2 的详细信息。
下面是其他列:
- ContainerName
- PodName
- PodNamespace
登记 只能通过 ConfigMap 进行配置。 可通过 ConfigMap 和 DCR 进行配置。 1
定价 仅与全价分析日志兼容。 除分析日志外,还支持低成本基本日志层。
查询 标准查询需要对库存表执行多次联接操作。 包括其他 Pod 和容器元数据,以降低查询复杂度并减少联接操作。
多行 不支持,多个条目被拆分为多行。 支持多行日志记录,以便为多行输出提供合并的单一条目。

1使用基于服务主体身份验证的群集不支持 DCR 配置。 将基于服务主体的群集迁移到托管标识以使用此体验。

评估对现有警报的影响

在启用 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 表。

容器见解中的多行日志记录

启用多行日志记录后,以前拆分的容器日志将拼接在一起,并作为单个条目发送到 ContainerLogV2 表。 如果拼接的日志行大于 64 KB,则会由于 Log Analytics 工作区限制而被截断。 此功能还支持 .NET、Go、Python 和 Java 堆栈跟踪,这些跟踪在 ContainerLogV2 表中显示为单个条目。 使用 ConfigMap 启用多行日志记录,如使用 ConfigMap 在容器见解中配置数据收集中所述。

注意

configmap 现在具有语言规范选项,其中客户只能选择他们感兴趣的语言。 可以通过在 configmap 的 stacktrace_languages 选项中编辑语言来启用此功能。

以下屏幕截图显示了 Go 异常堆栈跟踪的多行日志记录:

已禁用多行日志记录

屏幕截图显示禁用的多行日志记录。

已启用多行日志记录

屏幕截图显示启用的多行日志记录。

Java 堆栈跟踪

显示为 Java 启用多行的屏幕截图。

Python 堆栈跟踪

显示为 Python 启用多行的屏幕截图。

后续步骤