跳转至

Kubernetes Prometheus Exporter


介绍

已废弃,相关功能移动到 KubernetesPrometheus 采集器

本文档介绍如何采集 Kubernetes 集群中自定义 Pod 暴露出来的 Prometheus 指标,有两种方式:

  • 通过 Annotations 方式将指标接口暴露给 DataKit
  • 通过自动发现 Kubernetes Endpoint Services 到 Prometheus,将指标接口暴露给 DataKit

以下会详细说明两种方式的用法。

使用 Annotations 开放指标接口

需要在 Kubernetes deployment 上添加特定的 template annotations,来采集由其创建的 Pod 暴露出来的指标。Annotations 要求如下:

  • Key 为固定的 datakit/prom.instances
  • Value 为 prom 采集器完整配置,例如:
[[inputs.prom]]
  urls   = ["http://$IP:9100/metrics"]
  source = "<your-service-name>"
  measurement_name = "<measurement-metrics>"
  interval = "30s"

  [inputs.prom.tags]
    # namespace = "$NAMESPACE"
    # pod_name = "$PODNAME"
    # node_name = "$NODENAME"

其中支持如下几个通配符:

  • $IP:通配 Pod 的内网 IP
  • $NAMESPACE:Pod Namespace
  • $PODNAME:Pod Name
  • $NODENAME:Pod 所在的 Node 名称

!!! tip

Prom 采集器不会自动添加诸如 `namespace` 和 `pod_name` 等 tags,可以在上面的 config 中使用通配符添加额外 tags,例如:

``` toml
  [inputs.prom.tags]
    namespace = "$NAMESPACE"
    pod_name = "$PODNAME"
    node_name = "$NODENAME"
```

操作步骤

  • 登录到 Kubernetes 所在主机
  • 打开 deployment.yaml,添加 template annotations 示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prom-deployment
  labels:
    app: prom
spec:
  template:
    metadata:
      labels:
        app: prom
      annotations:
        datakit/prom.instances: |
          [[inputs.prom]]
            urls   = ["http://$IP:9100/metrics"]
            source = "<your-service-name>"
            interval = "30s"
            [inputs.prom.tags]
              namespace = "$NAMESPACE"
              pod_name  = "$PODNAME"
              node_name = "$NODENAME"
Note

annotations 一定添加在 template 字段下,这样 deployment.yaml 创建的 Pod 才会携带 datakit/prom.instances

  • 使用新的 yaml 创建资源
kubectl apply -f deployment.yaml

至此,Annotations 已经添加完成。DataKit 稍后会读取到 Pod 的 Annotations,并采集 url 上暴露出来的指标。

好的,我来帮您完善和补充这段文档,使其更加清晰、完整和专业。


自动发现 Pod/Service 的 Prometheus 指标

注意:此功能的完整文档和最新配置已迁移至 KubernetesPrometheus 采集器 - “基于 Annotations 的 Prometheus 指标自动发现机制”。本文档仅保留基础的环境变量配置说明,建议前往新文档查看详细配置示例和最佳实践。

功能概述

该功能能够自动发现 Kubernetes 集群中 Pod 或 Service 上的特定 Annotations,并根据注解内容动态生成 Prometheus 指标的采集配置。当 Pod 或 Service 被添加了预定义的注解后,DataKit 会自动拼接 HTTP URL 并创建对应的 Prometheus 指标采集任务,无需手动修改采集器配置。

开启方式

此功能默认关闭,需要通过以下环境变量在 DataKit 中启用。这两个环境变量作为全局开关,控制自动发现功能的启用状态:

  • ENV_INPUT_CONTAINER_ENABLE_AUTO_DISCOVERY_OF_PROMETHEUS_POD_ANNOTATIONS:设置为 "true" 时,开启基于 Pod Annotations 的自动发现
  • ENV_INPUT_CONTAINER_ENABLE_AUTO_DISCOVERY_OF_PROMETHEUS_SERVICE_ANNOTATIONS:设置为 "true" 时,开启基于 Service Annotations 的自动发现

环境变量配置详情请参考 container 文档

功能特点

  • 自动发现:无需重启 DataKit,自动识别新建或更新的 Pod/Service
  • 动态配置:根据注解内容动态生成采集配置,灵活适应不同应用
  • 资源过滤:支持通过注解值对采集目标进行精确控制
  • 配置继承:Pod 级别的配置优先级高于 Service 级别

兼容性说明

原有的环境变量开启方式完全兼容,现有配置无需修改。但后续的功能增强和配置选项将在 KubernetesPrometheus 采集器文档 中更新,建议用户迁移至新的配置方式以获得更完整的功能支持。

延伸阅读

文档评价

文档内容是否对您有帮助? ×