prometheus服务发现,文件发现
【1】静态服务发现
- job_name: "nodes" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: - 10.99.31.206:9100 - 10.99.31.201:9100 - 10.99.31.202:9100
【2】基于文件的服务发现 file_sd_configs
(2.1)yaml 和 json 格式
在Prometheus支持的众多服务发现的实现方式中,基于文件的服务发现是最通用的方式。这种方式不需要依赖于任何的平台或者第三方服务。对于Prometheus而言也不可能支持所有的平台或者环境。
通过基于文件的服务发现方式下,Prometheus会定时从文件中读取最新的Target信息,因此,你可以通过任意的方式将监控Target的信息写入即可。
用户可以通过JSON或者YAML格式的文件,定义所有的监控目标。
例如,在下面的yaml文件中分别定义了2个采集任务,以及每个任务对应的Target列表:
yaml格式 - targets: ['192.168.1.220:9100'] labels: app: 'app1' env: 'game1' region: 'us-west-2' - targets: ['192.168.1.221:9100'] labels: app: 'app2' env: 'game2' region: 'ap-southeast-1' json格式 [ { "targets": [ "192.168.1.221:29090"], "labels": { "app": "app1", "env": "game1", "region": "us-west-2" } }, { "targets": [ "192.168.1.222:29090" ], "labels": { "app": "app2", "env": "game2", "region": "ap-southeast-1" } } ]
(2.2)加额外的标签 labels
$ cat file_sd/test.yml - targets: - "10.20.33.21:9100" - "10.20.33.90:9100" labels: hello: kitty - targets: - "10.20.33.249:9100" - "10.20.33.105:9100" labels: hello: world
(2.3)prometheus 配置
- job_name: 'file_sd_test' scrape_interval: 10s file_sd_configs: - files: - /data/prometheus/static_conf/*.yml - /data/prometheus/static_conf/*.json
这里要注意,静态文件 *.yml 的 job_name 会被 prometheus.yml 中的 job_name 覆盖。
(2.4)修改文件刷新频率
prometheus默认5m刷新一次文件内容,我们可以修改为30秒
- job_name: 'file_sd_test' scrape_interval: 10s file_sd_configs: - refresh_interval: 30s # 30s重载配置文件 files: - /data/prometheus/static_conf/*.yml - /data/prometheus/static_conf/*.json
通过这种方式,Prometheus会自动的周期性读取文件中的内容。当文件中定义的内容发生变化时,不需要对Prometheus进行任何的重启操作。
至此,完成。 curl -X POST localhost:9090/-/reload 即可
【参考文档】
转自:https://blog.csdn.net/w2009211777/article/details/123950688
参考:https://blog.csdn.net/lovely_nn/article/details/122209262