使用数据收集规则在容器见解中配置数据收集和成本优化

本文介绍如何使用 Kubernetes 群集的数据收集规则 (DCR) 在容器见解中配置数据收集。 这包括用于优化成本的预设配置。 将群集载入容器见解时,会创建 DCR。 容器化代理使用此 DCR 来定义群集的数据收集。

DCR 主要用于配置性能和清单数据的数据收集,并用于配置成本优化。

可使用 DCR 执行的特定配置包括:

  • 为性能和清单数据启用/禁用收集和命名空间筛选。
  • 定义性能和清单数据的收集时间间隔
  • 启用/禁用 Syslog 收集
  • 选择日志架构

重要

在容器见解中完成数据收集配置可能需要编辑群集的 DCR 和 ConfigMap,因为每种方法都允许配置不同的设置集。

请参阅使用 ConfigMap 在容器见解中配置数据收集,以了解设置列表以及使用 ConfigMap 配置数据收集的过程。 客户不应删除或手动编辑其 DCR 资源。

先决条件

配置数据收集

启用容器见解时创建的 DCR 命名为 MSCI-<群集区域>-<群集名称>。 可在 Azure 门户中,在“监视”菜单中选择“数据收集规则”选项来查看它。 不要直接修改 DCR,而是应使用下述的方法之一来配置数据收集。 若要详细了解每个方法使用的不同可用设置,请参阅数据收集参数

警告

默认的容器见解体验取决于所有现有数据流。 删除一个或多个默认流会使容器见解体验不可用,并且需要使用其他工具(如 Grafana 仪表板和日志查询)分析收集到的数据。

启用容器见解后,可以使用 Azure 门户在现有群集上启用成本优化,也可以在群集上启用容器见解以及成本优化。

  1. 在 Azure 门户中选择群集。

  2. 在菜单的“监视”部分中选择“见解”选项。

  3. 如果群集上已启用容器见解,请选择“监视设置”按钮。 如果未启用,请选择“配置 Azure Monitor”,并参阅使用 Azure Monitor 在 Kubernetes 群集上启用监视以详细了解如何启用监视。

    AKS 群集的屏幕截图,其中显示了“监视设置”按钮。

  4. 对于已启用 AKS 和 Arc 的 Kubernetes,如果尚未将群集迁移至托管标识身份验证,则选择“使用托管标识”。

  5. 选择“成本预设”中所述的成本预设之一。

    显示加入选项的屏幕截图。

  6. 如果要自定义设置,请单击“编辑集合设置”。 有关每个设置的详细信息,请参阅数据收集参数。 有关收集到的数据,请参阅下方的收集到的数据

    显示集合设置选项的屏幕截图。

  7. 单击“配置”以保存设置。

成本预设

使用 Azure 门户配置成本优化时,可以从以下预设配置中进行选择。 可以选择其中一个或提供自己的自定义设置。 默认情况下,容器见解使用标准预设。

成本预设 收集频率 命名空间筛选器 Syslog 收集 收集的数据
Standard 1 m 未启用 所有标准容器见解表
成本优化 5 m 排除 kube-system、gatekeeper-system、azure-arc 未启用 所有标准容器见解表
Syslog 1 m 默认情况下启用 所有标准容器见解表
日志和事件 1 m 未启用 ContainerLog/ContainerLogV2
KubeEvents
KubePodInventory

收集的数据

通过“收集的数据”选项,可选择为群集填充的表。 这相当于使用 CLI 或 ARM 执行配置时的 streams 参数。 如果选择“全部(默认)”以外的任何其他选项,容器见解体验将变为不可用,你必须使用 Grafana 或其他方法分析收集到的数据。

屏幕截图显示了收集的数据选项。

分组 说明
全部(默认值) 所有标准容器见解表 需要它才能启用默认容器见解可视化效果
性能 性能, InsightsMetrics
日志和事件 ContainerLog 或 ContainerLogV2,KubeEvents,KubePodInventory 如果已启用托管 Prometheus 指标,建议使用
工作负载,部署和 HPA InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
永久卷 InsightsMetrics, KubePVInventory

数据收集参数

下表描述了支持的数据收集设置以及用于不同载入选项的每个集合设置的名称。

名称 描述
收集频率
CLI:interval
ARM:dataCollectionInterval
确定代理收集数据的频率。 有效值为 1m - 30m,间隔为 1m。默认值为 1m。 如果该值超出允许的范围,则默认为 1m
命名空间筛选
CLI:namespaceFilteringMode
ARM:namespaceFilteringModeForDataCollection
Include:只会从命名空间字段中的值收集数据。
Exclude:会从所有命名空间收集数据,但命名空间字段中的值除外。
Off:忽略任何命名空间选择并收集所有命名空间中的数据。
命名空间筛选
CLI:namespaces
ARM:namespacesForDataCollection
逗号分隔的 Kubernetes 命名空间数组负责收集库存,并根据 namespaceFilteringMode 这些命名空间的清单和性能数据。
例如,如果在使用 Include 设置的情况下指定 namespaces = ["kube-system", "default"],则只收集这两个命名空间的数据。 如果使用Exclude设置,代理会从除kube-systemdefault之外的所有其他命名空间收集数据。 如果使用 Off 设置,代理将从所有命名空间收集数据,包括 kube-system 和 default。 将忽略无效和无法识别的命名空间。
启用 ContainerLogV2
CLI:enableContainerLogV2
ARM:enableContainerLogV2
用于启用 ContainerLogV2 架构的布尔标志。 如果设置为 true,则 stdout/stderr 日志将引入到 ContainerLogV2 表。 否则,除非在 ConfigMap 中另有指定,否则容器日志将引入到 ContainerLog 表。 指定单个流时,必须包含 ContainerLog 或 ContainerLogV2 的相应表。
收集到的数据
CLI:streams
ARM:streams
容器见解表流的数组。 请参阅上面受支持的流到表映射。

适用的表和指标

收集频率命名空间筛选的设置不应用于所有容器见解数据。 下表列出了容器见解使用的 Log Analytics 工作区中的表和它收集的指标,以及应用于每个指标的设置。

注意

此功能配置除 ContainerLog 和 ContainerLogV2 以外的所有容器见解表的设置。 若要配置这些表的设置,请更新代理数据收集设置中所述的 ConfigMap。

表名 间隔? 命名空间? 备注
ContainerInventory
ContainerNodeInventory 数据收集的命名空间设置不适用,因为 Kubernetes 节点不是命名空间范围的资源
KubeNodeInventory 数据收集的命名空间设置不适用,因为 Kubernetes 节点不是命名空间范围的资源
KubePodInventory
KubePVInventory
KubeServices
KubeEvents 数据收集的间隔设置不适用于 Kubernetes 事件
性能 数据收集的命名空间设置不适用于与 Kubernetes 节点相关的指标,因为 Kubernetes 节点不是命名空间范围的对象。
InsightsMetrics 数据收集设置仅适用于收集以下命名空间的指标:container.azm.ms/kubestate、container.azm.ms/pv 和 container.azm.ms/gpu
指标命名空间 间隔? 命名空间? 备注
Insights.container/nodes 节点不是命名空间范围的资源
Insights.container/pods
Insights.container/containers
Insights.container/persistentvolumes

流值

当指定要使用 CLI 或 ARM 收集的表时,请指定与 Log Analytics 工作区中的特定表相对应的流名称。 下表列出了每个表的流名称。

注意

如果你熟悉数据收集规则的结构,则你应该知道此表中的流名称在 DCR 的 dataFlows 节中指定。

Stream 容器见解表
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf 性能

对可视化效果和警报的影响

如果当前正在将上述表用于其他自定义警报或图表,则修改数据收集设置可能会导致这些体验降级。 如果你要排除命名空间或降低数据收集频率,请查看使用此数据的现有警报、仪表板和工作簿。

若要扫描引用这些表的警报,请运行以下 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 "Perf" or properties  contains "InsightsMetrics" or properties  contains "ContainerInventory" or properties  contains "ContainerNodeInventory" or properties  contains "KubeNodeInventory" or properties  contains"KubePodInventory" or properties  contains "KubePVInventory" or properties  contains "KubeServices" or properties  contains "KubeEvents" 
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

后续步骤