笔者想实现对一部分URL进行可访问性监控,周期性访问获取每次访问的时延以及可达性记录。实际上如果自己编程的话应该很容易实现,但是考虑到后续扩容(增加URL数量)以及想将相关监控记录及时写入后台的对象存储中,所以此处笔者采用Blackbox_exporter+Prometheus的方式予以实现,以Ubuntu系统中部署为例:
1、下载最新blackbox-exporter
从https://github.com/prometheus/blackbox_exporter/releases/选择合适的版本,例如ubuntu系统中选择linux-amd64版本进行下载:
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
之后解压缩 tar zxvf blackbox_exporter-0.23.0.linux-amd64.tar.gz
mv blackbox_exporter-0.23.0.linux-amd64 blackbox_exporter
mv blackbox_exporter /usr/local/
2、配置blackbox-exporter开机启动
vim /etc/systemd/system/blackbox-exporter.service
具体内容为:
[Unit]
Description=Prometheus Blackbox Exporter
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/blackbox_exporter/blackbox_exporter \
--config.file=/usr/local/blackbox_exporter/blackbox.yml \
--web.listen-address=:9115
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl enable –now blackbox-exporter.service
至此就可以通过 ps aux|grep blackbox 查看到blackbox-exporter已经启动了
也可以直接访问 http:/127.0.0.1:9115 进行查看相关状态
3、利用blackbox-exporter 实现对URL 可访问性以及访问时延的监控
首先安装prometheus
apt-getinstall prometheus
具体配置文件位置在: /etc/prometheus/prometheus.yaml文件
- job_name: 'http_status'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- 'http://www.xiaomi.com'
- 'http://www.magedu.com'
- 'http://www.baidu.com'
labels:
instance: http_status
group: web
relabel_configs:
- source_labels: [__address__] # 将__address__(当前监控目标URL地址的标签)修改为__param_target,用于传递给blackbox_exporter
target_label: __param_target #标签key为__param_target、value为www.xiaomi.mkey为__param_target、value为www.magedu.com
- source_labels: [__param_target] #基于__param_target获取监控目标
target_label: url #将监控目标的值与 url 创建一个label
- target_label: __address__ #新添加一个目标__address__,指向blackbox_exporter服务器地址,用于将监控请求发送给指定的blackbox_exporter服务器
replacement: 127.1.1.1:9115 #指定blackbox_exporter服务器地址
将上面配置中的 最后一行 127.1.1.1换成blackbox-exporter所在服务器的IP地址即可。
然后即可通过 http://127.0.0.1:9090查看监控url的状态信息