一、先讲清楚:做什么
服务发现 = 不用每次手动改 prometheus.yml ,让 Prometheus 自动发现要监控的机器。本文只做最常用:基于文件的服务发现(file_sd)。
二、第一步:创建服务发现目录(固定路径)
mkdir -p /etc/prometheus/targets
三、第二步:编写服务发现 JSON 文件
vi /etc/prometheus/targets/docker.json
粘贴以下内容(我的 IP:192.168.52.130):
[
{
"targets": ["192.168.52.130:8080", "192.168.52.130:9100"],
"labels": {
"env": "test",
"job": "docker_auto"
}
}
]
保存退出:ESC → :wq
四、第三步:把服务发现加到 prometheus.yml
vi /etc/prometheus/prometheus.yml
在 scrape_configs 下面添加:
- job_name: 'file_sd_docker'
file_sd_configs:
- files:
- /etc/prometheus/targets/*.json
refresh_interval: 10s
五、第四步:重启 Prometheus
systemctl restart prometheus
或热重载(推荐):
curl -X POST http://192.168.52.130:9090/-/reload
六、第五步:验证服务发现成功
浏览器打开:
http://192.168.52.130:9090/targets
看到:
- file_sd_docker
- 状态 UP
- 自动出现 8080、9100✅ 完成!

- 静态配置缺点:修改麻烦、不能自动加机器
- 文件服务发现优点:
- 自动加载
- 不用重启 Prometheus
- 支持 json/yaml
- refresh_interval: 10s = 每 10 秒扫描文件更新