在 Kubernetes 集成中使用自定义数据采集管道

编辑

本教程将解释如何在 Kubernetes 集成中添加自定义数据采集管道,以便为 Pod 的部署和 CronJob 添加特定的元数据字段。

自定义管道可用于添加自定义数据处理,例如添加字段、混淆敏感信息等。有关更多信息,请参阅我们关于使用自定义数据采集管道转换数据的教程。

Kubernetes 的元数据丰富

编辑

Kubernetes 集成用于通过 Elastic Agent 从 Kubernetes 集群收集日志和指标。在收集过程中,该集成会使用额外的有用信息增强收集的信息,用户可以将这些信息与不同的 Kubernetes 资产关联起来。添加到收集数据之上的这些附加信息,例如标签、注解、Kubernetes 资产的祖先名称等,称为元数据。

Kubernetes 提供程序提供了 add_resource_metadata 选项来配置元数据丰富选项。

对于 Elastic Agent 版本 >[8.10.4],元数据丰富的默认配置是 add_resource_metadata.deployment=falseadd_resource_metadata.cronjob=false。这意味着从属于特定部署的副本集创建的 Pod 不会使用 kubernetes.deployment.name 进行丰富。此外,从属于特定 CronJob 的作业创建的 Pod 不会使用 kubernetes.cronjob.name 进行丰富。

Kubernetes 集成策略 > 从 Kube-state-metrics 收集 Kubernetes 指标 > Kubernetes Pod 指标

Configure add_resource_metadata

示例:在托管 Elastic Agent 策略中通过 add_resource_metadata 启用丰富

注意:启用部署和 CronJob 元数据丰富会导致 Elastic Agent 的内存消耗增加。Elastic Agent 使用本地缓存来记录正在发现的 Kubernetes 资产。

通过数据采集管道为 Kubernetes Pod 添加部署和 CronJob

编辑

作为保持该功能启用并为 Elastic Agent 使用更多内存资源的替代方案,用户可以使用数据采集管道来添加缺少的 kubernetes.deployment.namekubernetes.cronjob.name 字段。

按照使用自定义数据采集管道转换数据教程,导航到 state_pod 数据流,路径如下:Kubernetes 集成策略 > 从 Kube-state-metrics 收集 Kubernetes 指标 > Kubernetes Pod 指标

创建以下具有两个处理器的自定义数据采集管道

Custom ingest pipeline
部署的处理器
编辑
Gsub Processor for deployment
CronJob 的处理器
编辑
Gsub Processor for cronjob

最终的 metrics-kubernetes.state_pod@custom 数据采集管道

[
  {
    "gsub": {
      "field": "kubernetes.replicaset.name",
      "pattern": "(?:.(?!-))+$",
      "replacement": "",
      "target_field": "kubernetes.deployment.name",
      "ignore_missing": true,
      "ignore_failure": true
    }
  },
  {
    "gsub": {
      "field": "kubernetes.job.name",
      "pattern": "(?:.(?!-))+$",
      "replacement": "",
      "target_field": "kubernetes.cronjob.name",
      "ignore_missing": true,
      "ignore_failure": true
    }
  }
]

注意:数据采集管道不检查部署和 CronJob 祖先的实际存在性,它只添加特定的值。