前言
prometheus默认使用静态配置文件监控服务,每次添加服务都要重载,比较麻烦。好在官方提供多种动态服务发现的方法,常用的一般有基于文件服务发现、基于consul服务发现和基于dns服务发现,本文主要介绍基于consul如何实现动态增加、删除监控节点。
- prometheus版本:2.38.0
- consul版本:1.13.1
- 系统版本:centos 7
安装consul
- 使用二进制包安装
# 先启动试试 ./consul agent -dev
- 编辑服务注册文件
{ "service": { "id": "192.168.0.20", "name": "node_exporter", "address": "192.168.0.20", "tags": [ "exporter" ], "checks": [ { "http": "http://192.168.0.20:9100/metrics", "interval": "5s" } ], "port": 9100 } }
- 脚本启动,内容如下,仅供参考
#!/bin/bash set -u script_dir=$(cd $(dirname $0) && pwd) logfile=${script_dir}/logs/app.log function prepare(){ [ -d ${script_dir}/logs ] || mkdir -p ${script_dir}/logs [ -d ${script_dir}/data ] || mkdir -p ${script_dir}/data } function startapp(){ nohup ${script_dir}/consul agent -dev --client 0.0.0.0 \ -config-dir=${script_dir}/conf \ -data-dir=${script_dir}/data \ -pid-file=${script_dir}/logs/app.pid \ > ${logfile} 2>&1 & } function main(){ prepare startapp } main
- 测试。浏览器访问 IP:8500 看能不能打开web ui界面
配置prometheus
- 安装略过
- prometheus.yml相关配置
scrape_configs: - job_name: "node_exporter" metrics_path: /metrics scheme: http consul_sd_configs: - server: 192.168.0.20:8500 services: - node_exporter
配置node_exporter
- 安装略过
- 启动
nohup /home/apps/node_exporter/node_exporter \ --web.listen-address=":9090" > /dev/null 2>&1 &
其它
- 通过http api注册服务
curl -X PUT -d '{"id": "192.168.0.20","name": "node_exporter","address": "192.168.0.20","port": 9100,"tags": ["linux"],"checks": [{"http": "http://192.168.0.20:9090/metrics", "interval": "5s"}]}' http://192.168.0.20:8500/v1/agent/service/register
- 通过 http api 删除服务
# 删除节点时候指定id curl -X PUT http://192.168.0.20:8500/v1/agent/service/deregister/192.168.0.20
- 如果要添加其它服务器节点,则替换id、address、checks等即可,name不变,比如192.168.0.21也安装node_exporter, 向consul的api接口发起请求添加服务
curl -X PUT -d '{"id": "192.168.0.21","name": "node_exporter","address": "192.168.0.21","port": 9090,"tags": ["linux"],"checks": [{"http": "http://192.168.0.21:9090/metrics", "interval": "5s"}]}' http://192.168.0.20:8500/v1/agent/service/register