筛选和自定义 Kubernetes 集群的数据采集

Azure Monitor 最初从 Kubernetes 群集收集的数据取决于 启用日志和指标收集时选择的选项。 完成此初始载入后,可以进一步自定义数据收集,以添加正确监视 Kubernetes 环境所需的数据,或筛选出不需要降低监视成本的数据。 可以通过高级筛选进一步优化成本,并将不同类型的数据发送到不同的存储。

本文介绍可为 Kubernetes 群集中的数据收集执行的不同类型的自定义,以及实现每个群集所需的方法。 提供了指向每个方法的详细说明的链接。

配置方法

在 Azure Monitor 中为 Kubernetes 群集启用监视时, Azure Monitor 代理(AMA) 安装在群集中。 此代理负责从群集收集日志和指标并将其发送到 Azure Monitor。

有两种方法可用于定义代理用于收集数据的配置。 每个方法控制数据收集的不同方面,因此你需要同时使用这两种方法来实现你的要求。 虽然日志和指标都使用相同的配置选项,但每种数据类型的配置单独完成。

方法 Description
ConfigMap Kubernetes 中的 ConfigMaps 存储群集中运行的应用程序的配置数据。 Microsoft 提供了多个用于日志和指标的 ConfigMap,这些 ConfigMap 被 Azure Monitor 代理读取,以修改代理从群集收集的数据的不同方面。 修改这些 ConfigMap 并将其应用到群集,以自定义每种数据类型的数据收集。
数据收集规则 (DCR) Azure Monitor 中的数据收集规则(DCR)定义从受监视的资源收集的数据以及发送该数据的位置。 为 Kubernetes 群集启用监视时,会自动为日志和指标创建单独的 DCR。 DCR 中的某些设置由代理读取,以确定群集收集的数据。 Azure Monitor 使用其他设置来确定从群集发送数据后如何处理这些数据。 这包括转换,这些转换在数据引入 Log Analytics 工作区之前提供对数据的高级筛选和操作。

下图演示了如何在 Kubernetes 群集收集数据中使用每个配置方法。 只有一个 DCR 用于日志收集。 图像中显示了两次,以说明代理在群集级别使用了 DCR 中的某些信息,而传递数据后 Azure Monitor 将使用 DCR 中的其他信息。

显示 Kubernetes 集群日志和指标收集以及 DCR 和 ConfigMap 作用的图表。

下表提供了两种配置方法的比较。 大多数设置仅在其中一种方法中可用,因此你不能选择要使用的方法。 可以使用任一方法配置一些 常见设置 ,但它们的工作方式存在重要差异。 在这些情况下,可以选择最符合要求的方法。

任务 ConfigMap 数据收集规则 (DCR)
日志收集 - 单独启用/禁用容器日志
- 容器日志的命名空间筛选
- 批注筛选
- 收集环境变量
- 启用/禁用所有容器日志
- 用于其他日志的命名空间过滤
- 指定已收集的表
- Log Analytics 工作区
- 使用转换进行自定义筛选
指标收集 - 启用/禁用目标
- 启用/禁用特定指标
- 基于批注的抓取
- Azure Monitor 工作区
部署 - 将 ConfigMap 应用到每个群集。
需要为了更改而重新部署。
- 为多个群集配置单个 DCR。
- 修改 DCR,无需重启。

通用设置

可以使用 ConfigMap 和 DCR 配置某些设置,但下表中介绍了一些重要差异。

设置 建议
容器日志 容器日志是群集中的 stdout/stderr 日志。 若要收集容器日志,必须在 ConfigMap 和 DCR(ContainerLogV2 流)中启用它们。 ConfigMap 允许单独启用 stdout 和 stderr 日志。 如果在 ConfigMap 中禁用任何一个日志,这两个日志都将不会被收集。
命名空间筛选 命名空间筛选在 ConfigMap 和 DCR 中配置,但针对不同的日志进行配置。 ConfigMap 中的命名空间筛选仅适用于容器日志,并且可以单独为 stdout 和 stderr 日志配置。 DCR 中的命名空间筛选适用于所有其他日志。 若要从日志集合中完全排除命名空间,必须在两个位置将其排除。

ConfigMap 配置

为日志和指标提供了单独的 ConfigMap,如下所示。 在 为群集启用监视时,日志和指标都应用了默认配置。 使用这些 ConfigMap 修改默认配置以满足你的要求。

Data Description
日志 用于日志收集的 ConfigMap 是 container-azm-ms-agentconfig.yaml。 有关每个可用设置的说明以及如何修改和将此 ConfigMap 应用到群集,请参阅 使用 ConfigMap 筛选容器日志集合 。 本文中的 ConfigMap 设置 部分提供了在应用 ConfigMap 之前使用的每个设置的默认值。
Metrics 有关默认情况下从群集收集的指标,请参阅 Azure Monitor 中的默认 Prometheus 指标配置 。 用于修改此配置的 ConfigMap 是 ama-metrics-settings-configmap。 请参阅 使用 ConfigMap 从 Kubernetes 群集中自定义 Prometheus 指标的集合 ,了解每个可用设置的说明以及如何修改和应用此 ConfigMap 到群集。 其他 ConfigMap 可用于创建自定义抓取任务。 有关如何使用这些 ConfigMap 的详细信息,请参阅 在 Kubernetes 群集中使用 ConfigMap 创建自定义 Prometheus 抓取作业

DCR 配置

为群集启用日志收集时,会自动为包括 载入过程中指定的设置的日志和指标创建单独的 DCR。 有关在载入过程中创建的 DCR 和相关对象的详细信息,请参阅下面的 DCR 和相关资源

Data Description
Metrics 指标的 DCR 被称为MSProm-<region>-<cluster name>。 它包括 Azure Monitor 工作区,但很少用于定义收集的指标的详细信息。 请使用 ConfigMap 来配置这些详细信息。 修改 DCR 的主要方案是将指标发送到多个 Azure Monitor 工作区,如 将 Prometheus 指标发送到多个 Azure Monitor 工作区中所述。
日志 日志被称为MSCI-<region>-<cluster name>的 DCR。 它包括 Log Analytics 工作区和其他在载入过程中指定的配置,例如收集的数据流和命名空间筛选。 载入后,可以使用相同的方法来修改这些设置。 例如,在 Azure 门户中选择不同的 日志预设 以更改收集的流,或使用新的日志配置文件运行 CLI 命令以添加命名空间筛选。 在这些情况下,无需使用 DCR 以交互方式工作。 或者,可以直接 修改 DCR 以更改这些设置。 还可以直接修改 DCR 来实现下面所述的高级方案。

高级筛选

使用 DCR 中的转换,可以应用 KQL 查询来筛选和处理将发送到 Azure Monitor 的数据,然后再将其引入 Log Analytics 工作区。 这使您可以在数据引入前进行丰富或清理,以实现合规性和成本优化。 示例包括筛选传入数据的行和列、屏蔽敏感字段以及创建新的计算字段。 有关如何为从 Kubernetes 群集收集的日志实现转换的详细信息,请参阅 Azure Monitor 中 Kubernetes 日志的高级筛选和转换

注释

转换仅适用于发送到 Log Analytics 工作区的数据,因此它们不能用于筛选发送到 Azure Monitor 工作区的指标数据。

发送到多个工作区和表格

DCR 指定发送数据的工作区和表。 适用于 Kubernetes 的 DCR 只能为日志数据指定单个 Log Analytics 工作区,而只能为指标数据指定单个 Azure Monitor 工作区。 您可以创建额外的 DCR 并将其与您的群集相关联。 例如,你可能有不同的团队负责在同一群集中运行的不同应用程序,并且每个团队都需要自己的数据集。 有关使用 ConfigMap 和 DCR 的详细示例,请参阅 将 Prometheus 指标发送到多个 Azure Monitor 工作区

Log Analytics 工作区具有不同的数据层,可提供不同的功能和成本。 可以通过将某些数据发送到配置为降低成本的表来降低监视成本。 与其为另一层配置整个表(例如为 基本日志配置 ContainerLogV2),不如使用 DCR 中的转换,选择要发送到不同层配置的不同表的数据。 有关详细示例,请参阅 将数据发送到不同的表

与多个群集共享 DCR

如果有多个群集使用相同的配置,则可以共享单个 DCR。 此策略可降低管理开销,并确保群集之间的一致性,尤其是在实现复杂配置(例如使用转换进行高级筛选)时。 单个群集还可以与多个 DCR 相关联,每个 DCR 定义要收集的数据。

若要对多个群集使用通用 DCR,请从每个群集的当前 DCR 中删除关联,并创建新的与共享 DCR 的关联。 群集与通用 DCR 关联后,可以删除旧的 DCR。 有关管理 DCR 关联的不同方法 ,请参阅 Azure Monitor 中的“管理数据收集规则关联 ”。

下表介绍了在 Azure Monitor 中为 Kubernetes 群集启用监视 Prometheus 指标和容器日志记录时创建的资源。

日志收集

资源名称 资源类型 资源组 区域/位置 Description
MSCI-<aksclusterregion>-<clustername> 数据收集规则 与群集相同 与 Log Analytics 工作区相同 与 AKS 群集资源关联,定义 Azure Monitor 代理收集日志的配置。 这是用于添加转换的 DCR。

托管 Prometheus

资源名称 资源类型 资源组 区域/位置 Description
MSPROM-<aksclusterregion>-<clustername> 数据收集规则 与群集相同 与 Azure Monitor 工作区相同 与 AKS 群集资源关联,按指标加载项定义 prometheus 指标收集的配置。
MSPROM-<aksclusterregion>-<clustername> 数据收集终结点 与群集相同 与 Azure Monitor 工作区相同 DCR 用于从指标插件中采集 Prometheus 指标。

创建新的 Azure Monitor 工作区时,会创建以下其他资源。

资源名称 资源类型 资源组 区域/位置 Description
<azuremonitor-workspace-name> 数据收集规则 <MA_azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed 与 Azure Monitor 工作区相同 如果你使用 Prometheus 服务器的远程写入功能,则应使用 DCR。
<azuremonitor-workspace-name> 数据收集终结点 <MA_azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed 与 Azure Monitor 工作区相同 如果从 Prometheus 服务器进行远程写写入,则必须使用 DCE。

后续步骤