在prometheus根目录下创建file_sd.yml
文件(与prometheus.yml处于同一目录),文件内容如下:
- targets:
- localhost:9100
labels:
team: "advertisement"
region: "SZX"
更新prometheus.yml文件node_exporter
的对应部分为:
- job_name: node_exporter
file_sd_configs:
- files:
- file_sd.yml
重新启动prometheus服务。并访问targets页面,node_exporter服务成功被发现,且抓取到了文件中的相关label:
Prometheus会自动应用文件更新后的内容。当文件中定义的内容发生变化时,不需要对Prometheus进行任何的重启操作。
修改file_sd.yml
文件,添加新的target:
- targets:
- localhost:9100
labels:
team: "advertisement"
region: "SZX"
- targets:
- localhost111:9100 # 添加job
labels:
team: "another"
region: "BJS"
刷新prometheus浏览器页面,会自动应用文件中新添加的target:
通过文件进行服务发现的方式衍生了很多不同的玩法,比如与自动化配置管理工具(Ansible)结合、与Cron Job结合等等。
对于一些Prometheus还不支持的云环境,比如国内的阿里云、腾讯云等也可以使用这种方式通过一些自定义程序与平台进行交互自动生成监控Target文件,从而实现对这些云环境中基础设施的自动化监控支持: