Kubernetes Prometheus Exporter
介绍¶
已废弃,相关功能移动到 KubernetesPrometheus 采集器。
本页保留 datakit/prom.instances 的旧版配置示例及自动发现功能的环境变量兼容说明。
使用 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 创建资源
至此,Annotations 已经添加完成。DataKit 稍后会读取到 Pod 的 Annotations,并采集 url 上暴露出来的指标。
自动发现 Pod/Service 的 Prometheus 指标¶
配置方法和注解参数见 KubernetesPrometheus 采集器。原有环境变量仍然兼容,已有配置无需修改。以下开关默认关闭:
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 文档。