date: 2021-01-13title: Prometheus配置基于文件的服务发现 #标题
tags: Prometheus #标签
categories: 监控 # 分类

最近项目上要使用Prometheus来做监控,将近三百台机器,一开始是打算采用consul这种服务发现方式的,但对consul进行详细了解后,发现这个东西并不好,引入consul后,会增大一些工作量,得不偿失,故来研究下Prometheus基于文件的服务发现。

配置Prometheus

  1. $ cat /opt/prometheus/prometheus.yml # 增加如下job
  2. # ....... 省略部分配置
  3. - job_name: 'node_exporter'
  4. file_sd_configs:
  5. - refresh_interval: 1m # 每1分钟重新读取一次文件内容,默认为5m
  6. files:
  7. - /opt/prometheus/file_ds/*.yml
  8. # - /opt/prometheus/file_ds/*.json

定义yml文件

  1. $ cat /opt/prometheus/file_ds/*.yml
  2. - targets:
  3. - 192.168.20.10:9100
  4. - 192.168.20.5:9100
  5. - 192.168.20.6:9100
  6. labels:
  7. idc: pod7

重载Prometheus并验证target列表

  1. $ curl -XPOST http://192.168.20.10:9090/-/reload # 重启Prometheus
  2. # 这种重载方式要求Prometheus启动时增加了 “--web.enable-lifecycle” 选项

访问Prometheus的targets列表如下:

Prometheus配置基于文件的服务发现 - 图1

功能总结

采用基于文件的服务发现方式,可以灵活定义要监控的目标主机列表,并且增加或减少目标主机,均无需重载Prometheus。