blackbox-exporter简介
blackbox-exporter项目地址:https://github.com/prometheus/blackbox_exporter
blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,可以通过HTTP、HTTPS、DNS、ICMP、TCP和gRPC方式对目标实例进行检测。可用于以下使用场景:
- HTTP/HTTPS:URL/API可用性检测
- ICMP:主机存活检测
- TCP:端口存活检测
- DNS:域名解析
黑盒监控和白盒监控:
- 黑盒监控,关注的是实时状态,一般都是正在发生的事件,比如网站访问不了、磁盘无法写入数据等。即黑盒监控的重点是能对正在发生的故障进行告警。常见的黑盒监控包括HTTP探针、TCP探针等用于检测站点或者服务的可访问性,以及访问效率等。
- 白盒监控,关注的是原因,也就是系统内部的一些运行指标数据,例如nginx响应时长、存储I/O负载等
监控系统要能够有效的支持百盒监控和黑盒监控,通过白盒能够了解系统内部的实际运行状态,以及对监控指标的观察能够预判出可能出现的潜在问题,从而对潜在的不确定因素进行提前处理避免问题发生;而通过黑盒监控,可以在系统或服务发生故障时快速通知相关人员进行处理。
部署blackbox-exporter
下载软件包
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
tar xf blackbox_exporter-0.23.0.linux-amd64.tar.gz -C /usr/local/
ln -sv /usr/local/blackbox_exporter-0.23.0.linux-amd64 /usr/local/blackbox_exporter
/usr/local/blackbox_exporter/blackbox_exporter -h #查看帮助信息
准备service文件
# cat /lib/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
blackbox-exporter的配置文件使用默认的即可(/usr/local/blackbox_exporter/blackbox.yml),文件里定义了进行目标检测时要使用的模块和模块参数。至于要检测哪些目标是定义在Prometheus 的Job配置中。
启动blackbox-exporter
systemctl daemon-reload
systemctl start blackbox-exporter.service
systemctl status blackbox-exporter.service
systemctl enable blackbox-exporter.service
访问blackbox-exporter web界面验证
blackbox-exporter实现url监控
修改Prometheus配置,添加Job,内容如下:
- job_name: http-status
metrics_path: /probe #指定指标接口
params: #指定查询参数,在Prometheus向target发送Get请求获取指标数据时,会传递到url上
module: [http_2xx]
static_configs:
- targets:
- http://www.baidu.com
- http://www.jd.com
labels: #自定义标签,附加在target上
group: web
relabel_configs:
#将标签__address__的值赋值给__param_target标签,以__param开头的标签也会作为查询参数传递Prometheus的Get请求,作用和上面的params配置类似
- source_labels: [__address__]
target_label: __param_target
#将标签__param_target的值赋值给instance标签
- source_labels: [__param_target]
target_label: instance
#将标签__address__的值修改给balckbox-expoter的地址
- target_label: __address__
replacement: 192.168.122.22:9115
#以 http://www.baidu.com为例,最后其对应target的地址就是http://192.168.122.22:9115/probe?module=http_2xx&target=http://www.baidu.com
此job配置了对http://www.baidu.com和http://www.jd.com进行状态检测,验证是否可以访问,这里使用一个blackbox-exporter检测多个目标网站。
一般情况下exporter和目标实例是一对一关系,这种一个exporter获取多个目标实例的数据的方式官方称为multi-target-exporter,具体介绍可以参考Prometheus官方文档:https://prometheus.io/docs/guides/multi-target-exporter/
配置修改完成后重启Prometheus。然后在界面查看target状态。
选中一个target查看,可以看到它的对应目标地址
访问blackbox-exporter界面查看数据
blackbox-exporter实现ICMP监控
修改Prometheus配置,添加Job,内容如下:
- job_name: icmp-status
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 192.168.122.5
- 192.168.122.11
labels:
group: icmp
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.122.22:9115
配置修改完成后重启Prometheus。然后在界面查看target状态。
访问blackbox-exporter界面查看数据
blacbox-exporter实现端口监控
修改Prometheus配置,添加Job,内容如下:
- job_name: tcp-port-status
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- 192.168.122.23:3306
- 192.168.122.5:6443
labels:
group: tcp-port-status
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.122.22:9115
配置修改完成后重启Prometheus。然后在界面查看target状态。
访问blackbox-exporter界面查看数据
Grafana查看数据
导入模板,查看数据。模板ID: 9965
模板ID:13659