prometheus基于文件的服务发现

之间讲到,prometheus监控的对象就来自于他的配置文件里面的targets,如果要新增被监控对象,就继续往targets里面加。

但这个缺点是,每次修改完后都得重启prometheus。有没有什么办法,能在不重启的情况下增加target呢?有,那就是prometheus的服务自动发现

今天咱们讲一个最常用的方式,基于文件的服务发现(File-Based-Service-Discovery)

1 将默认配置文件做如下修改:

yaml 复制代码
# ...
scrape_configs:
  - job_name: "prometheus"

# 注释掉之前静态配置的内容
#    static_configs:
#      - targets: ["localhost:9090"]

# 修改服务发现为 File-Based-Service-Discovery:
    file_sd_configs:
    - files:
      - '/prometheus/targets/*.yml'  # 读取此目录下的所有 .yml 和 .json 文件
      - '/prometheus/targets/*.json'
      refresh_interval: 10s  # 每10秒钟读取一次,支持 s/m/h

2 启动promethus容器

bash 复制代码
docker run -d -p 9090:9090 \
-v $(pwd)/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml \ # 使用上面修改的配置文件,替换容器内的配置文件
-v /prometheus/targets:/prometheus/targets \
--name prometheus --rm bitnami/prometheus

3 在上面指定的目录下增加以下配置文件:

node_exporter1.yml:

yaml 复制代码
- targets: ['ip1:9200'] # 一组targets内可写多个target

- targets: ['ip2:9200'] # 另一组targets
  labels: # 为这一组targets内的所有target增加label
    environment: 'production' # labels也可写多个

node_exporter2.json:

json 复制代码
[
  {
    "targets": ["ip3:9200"]
  },
  {
    "targets": ["ip4:9200"],
    "labels": {"environment": "develop"}
  }
]

新增target时,可以增加文件,也可以直接修改文件内容,prometheus都能识别到

进入prometheus网页,点击Status>Targets

相关推荐
QYRdata8 小时前
机器人3D视觉感知赛道爆发 2026-2032年复合增长率达81.7%
人工智能·3d·机器人·服务发现·恒州博智
川石课堂软件测试15 小时前
JMeter异步接口测试实战
数据库·python·jmeter·mysql·kubernetes·测试用例·prometheus
QYRdata4 天前
年复合增长率8.2%!2026-2032年数据库开发服务赛道增长动能持续释放
数据库·服务发现·数据库开发·恒州博智
lbb 小魔仙4 天前
Redis运行状态总靠手动查?我用redis_exporter+Prometheus把指标、告警和远程抓取全接起来了
redis·bootstrap·prometheus
QYRdata4 天前
实时数据服务赛道持续升温,未来六年CAGR12.4%彰显发展潜力
服务发现·恒州博智
程序员-Benothing4 天前
Linux系统监控工具全家桶:sar、dstat、glances、Prometheus
linux·运维·prometheus
wzq11_6665 天前
Prometheus监控——云原生与非云原生监控
云原生·prometheus
东风微鸣5 天前
把 Tailscale 接进 Prometheus 监控
java·数据库·prometheus
Kendra9195 天前
运维监控平台(Prometheus + Grafana)部署与维护
运维·grafana·prometheus
Dovis(誓平步青云)6 天前
一年1956亿行:智能电表场景下的时序数据存储实践
运维·前端·自动化·音视频·prometheus