0 前言
基于 centos7.9
docker-ce-20.10.18
kubelet-1.22.3-0
kube-prometheus-0.10
prometheus-v2.32.1
1 简介
使用原生的 prometheus 时, 我们创建 job 直接修改配置文件即可, 然而在 prometheus-operator 中所有的配置都抽象成了 k8s CRD
资源, 手动配置 job 需要:
- 创建 secret
- 在 prometheus CRD 资源中配置
additionalScrapeConfigs
2 示例
2.1 node-exporter
添加 k8s 集群外的 node-exporter metrics
在 1.1.1.4 部署 node-exporter
docker run -d --name node-exporter \
-p 9102:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
registry.cn-hangzhou.aliyuncs.com/lvbibir/node-exporter:v1.3.1 \
--path.sysfs=/host/sys \
--path.rootfs=/roofs
# 验证可用性
[root@1-1-1-4 ~]# curl -s 1.1.1.4:9100/metrics | head -5
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.000326036
go_gc_duration_seconds{quantile="0.25"} 0.000326036
go_gc_duration_seconds{quantile="0.5"} 0.000714158
创建 job 配置 prometheus-additional.yaml
- job_name: "node-exporter"
static_configs:
- targets:
- "1.1.1.4:9100"
创建 secret additional-scrape-configs.yaml
kubectl create secret generic additional-scrape-configs -n monitoring --from-file=prometheus-additional.yaml > additional-scrape-configs.yaml
kubectl apply -f additional-scrape-configs.yaml
修改 prometheus 资源 prometheus-prometheus.yaml
, 添加 additionalScrapeConfigs
kind: Prometheus
spec:
# 添加如下三行
additionalScrapeConfigs:
name: additional-scrape-configs # secret name
key: prometheus-additional.yaml # secret key
更新一下 prometheus
[root@k8s-node1 demo]# kubectl apply -f ../prometheus-prometheus.yaml
查看结果
3 动态更新
后续所有的自定义配置直接更新现有的 secret 即可
比如在之前的 node-exporter 的 job 中新增一个 target
修改 prometheus-additional.yaml
- job_name: "node-exporter"
static_configs:
- targets:
- "1.1.1.4:9100"
- "192.168.17.99:59100"
更新 secret
kubectl create secret generic additional-scrape-configs -n monitoring --from-file=prometheus-additional.yaml > additional-scrape-configs.yaml
kubectl apply -f additional-scrape-configs.yaml
prometheus 会自动重载配置
4 更新失败排查
如果修改了 secret 不生效一定要注意 secret 部署的 namespace 是不是 monitoring
以上