在 Prometheus 中,我们新增监控节点,有几种方式可让 Prometheus Server 监听到新节点,这一节内容就来聊聊部分实现方式:
1 static_configs
使用 static_configs 的方式,在 Prometheus 的配置文件中,可按如下方法使用:
- job_name: 'redis_exporter'static_configs:- targets:- 192.168.150.232:50003
这种方式的一个问题就是:新增监控节点,必须要重启或者重新加载 Prometheus。而后面介绍的两种方法都是动态加载的形式。
2 file_sd_configs
2.1 修改 prometheus.yml
- job_name: 'dongcidongci'file_sd_configs:- files: ["/data/prometheus/conf.d/dongcidongci.json"]refresh_interval: 15s
2.2 编辑 Json 文件
vim /data/prometheus/conf.d/dongcidongci.json
加入新增监控节点的机器信息:
[{"targets": ["192.168.150.123:9100"],"labels": {"servicename": "MySQL","env": "Dev","hostname": "db-mysql-dongcidongci01"}},{"targets": ["192.168.21.126:9100"],"labels": {"servicename": "MySQL","env": "Dev","hostname": "db-mysql-dongcidongci02"}},{"targets": ["192.168.150.232:9104"],"labels": {"servicename": "MySQL","env": "Dev","hostname": "db-mysql-dongcidongci03"}}]
这种方式通常只要第一次配置的时候重启或者重新加载 Prometheus,后面只要在 Json 文件中新增内容,就能进行节点的发现。
3 consul_sd_config
Consul 提供服务注册/发现、健康检查、Key/Value 存储、多数据中心和分布式一致性保证等功能。
3.1 安装 consul
yum install -y yum-utilsyum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repoyum -y install consul
启动 consul
nohup consul agent -client 0.0.0.0 -dev &
3.2 修改 Prometheus 的配置文件
修改 Prometheus 的配置文件,增加 consul 的配置:
- job_name: 'consul-prometheus'consul_sd_configs:- server: '192.168.150.253:8500'services: []
重启或者重新加载 Prometheus。
3.3 注册
当有新增监控节点时,只要在 consul 中注册就行:
curl -X PUT -d '{"id": "mysql-exporter-232","name": "mysql-exporter-232","address": "192.168.150.232","port": 9104,"tags": ["test"],"checks": [{"http": "http://192.168.150.232:9104/metrics", "interval": "5s"}]}' http://192.168.150.253:8500/v1/agent/service/register
登录 http://192.168.150.253:8500/,就可以看的新注册的机器:

如果要注销,则执行下面的命令:
curl -X PUT http://192.168.150.253:8500/v1/agent/service/deregister/mysql-exporter-232
这种方式就可以非常方便的进行自动化,比如新增被监控的机器,直接在被监控的机器上跑一个脚本,脚本包含 exporter 的部署方式和注册 consul 的命令。
关于 Prometheus 加载节点配置的几种常用方式就介绍到这里,欢迎各位朋友关注这个全新的公众号,后续会分享一些有关 Prometheus、Kubernetes、GitLab、Docker、Terraform、运维开发的内容。




