使用数据收集规则在容器见解中配置数据收集和成本优化
本文介绍如何使用 Kubernetes 群集的数据收集规则 (DCR) 在容器见解中配置数据收集。 这包括用于优化成本的预设配置。 将群集载入容器见解时,会创建 DCR。 容器化代理使用此 DCR 来定义群集的数据收集。
DCR 主要用于配置性能和清单数据的数据收集,并用于配置成本优化。
可使用 DCR 执行的特定配置包括:
- 为性能和清单数据启用/禁用收集和命名空间筛选。
- 定义性能和清单数据的收集时间间隔
- 启用/禁用 Syslog 收集
- 选择日志架构
重要
在容器见解中完成数据收集配置可能需要编辑群集的 DCR 和 ConfigMap,因为每种方法都允许配置不同的设置集。
请参阅使用 ConfigMap 在容器见解中配置数据收集,以了解设置列表以及使用 ConfigMap 配置数据收集的过程。 客户不应删除或手动编辑其 DCR 资源。
先决条件
配置数据收集
启用容器见解时创建的 DCR 命名为 MSCI-<群集区域>-<群集名称>。 可在 Azure 门户中,在“监视”菜单中选择“数据收集规则”选项来查看它。 不要直接修改 DCR,而是应使用下述的方法之一来配置数据收集。 若要详细了解每个方法使用的不同可用设置,请参阅数据收集参数。
警告
默认的容器见解体验取决于所有现有数据流。 删除一个或多个默认流会使容器见解体验不可用,并且需要使用其他工具(如 Grafana 仪表板和日志查询)分析收集到的数据。
启用容器见解后,可以使用 Azure 门户在现有群集上启用成本优化,也可以在群集上启用容器见解以及成本优化。
在 Azure 门户中选择群集。
在菜单的“监视”部分中选择“见解”选项。
如果群集上已启用容器见解,请选择“监视设置”按钮。 如果未启用,请选择“配置 Azure Monitor”,并参阅使用 Azure Monitor 在 Kubernetes 群集上启用监视以详细了解如何启用监视。
对于已启用 AKS 和 Arc 的 Kubernetes,如果尚未将群集迁移至托管标识身份验证,则选择“使用托管标识”。
选择“成本预设”中所述的成本预设之一。
如果要自定义设置,请单击“编辑集合设置”。 有关每个设置的详细信息,请参阅数据收集参数。 有关收集到的数据,请参阅下方的收集到的数据。
单击“配置”以保存设置。
成本预设
使用 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-system和default之外的所有其他命名空间收集数据。 如果使用 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 工作区中的特定表相对应的流名称。 下表列出了每个表的流名称。
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
后续步骤
- 若要使用 ConfigMap 而不是 DCR 配置数据收集,请参阅使用 ConfigMap 在容器见解中配置数据收集。