黑盒探针blackbox_exporter快速入门指南
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
目录
一.部署blackbox_exporter
1.下载blackbox_exporter
[root@node-exporter42 ~]# wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.25.0/blackbox_exporter-0.25.0.linux-amd64.tar.gz
2.创建工作目录
[root@node-exporter42 ~]# mkdir -pv /yinzhengjie/softwares
3.解压blackbox_exporter
[root@node-exporter42 ~]# tar xf blackbox_exporter-0.25.0.linux-amd64.tar.gz -C /yinzhengjie/softwares
4.编写blackbox_exporter启动脚本
cat > /lib/systemd/system/blackbox_exporter.service <<EOF
[Unit]
Description=yinzhengjie's blackbox_exporter Exporter
Documentation=https://www.cnblogs.com/yinzhengjie
After=network.target
[Service]
ExecStart=/yinzhengjie/softwares/blackbox_exporter-0.25.0.linux-amd64/blackbox_exporter --config.file="/yinzhengjie/softwares/blackbox_exporter-0.25.0.linux-amd64/blackbox.yml" --web.listen-address=:9115
[Install]
WantedBy=multi-user.target
EOF
5.启动blackbox_exporter
[root@node-exporter42 ~]# systemctl daemon-reload
[root@node-exporter42 ~]#
[root@node-exporter42 ~]# systemctl enable --now blackbox_exporter.service
Created symlink /etc/systemd/system/multi-user.target.wants/blackbox_exporter.service → /lib/systemd/system/blackbox_exporter.service.
[root@node-exporter42 ~]#
[root@node-exporter42 ~]# ss -ntl | grep 9115
LISTEN 0 4096 *:9115 *:*
[root@node-exporter42 ~]#
[root@node-exporter42 ~]#
温馨提示:
如上图所示,我们可以直接基于浏览器访问blackbox_exporter的WebUI啦~
二.页面访问http探测
1.查看blackbox_exporter支持的模块
如上图所示,blackbox支持10+种模块,包括但不限于:
- grpc
- grpc_plain
- http_2xx
- http_post_2xx
- icmp
- icmp_ttl5
- irc_banner
- pop3s_banner
- ssh_banner
- tcp_connect
尽管随着blackbox版本的升级,其支持的模块会逐渐增多,但是底层依旧是基于"grpc","tcp","http","icmp"四种协议来实现探针的。
2.blackbox页面测试模块
如上图所示,我们可以在页面上使用http_2xx模块,监控目标是"baidu.com"。
参考URL:
http://10.0.0.42:9115/probe?target=prometheus.io&module=http_2xx&debug=true
三.http_2xx模块探测实战案例
1.未配置relabel_configs错误配置示例
1.修改Prometheus server的配置文件
- job_name: "yinzhengjie-blackbox-http"
metrics_path: /probe
params:
module: [http_2xx]
targets:
- www.baidu.com
- https://www.cnblogs.com/yinzhengjie
- 10.0.0.31:3000
static_configs:
- targets:
- 10.0.0.42:9115
2.查询PromQL语句
probe_duration_seconds
2.配置relabel_configs示例
1.修改Prometheus server的配置文件
- job_name: "yinzhengjie-blackbox-http"
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- www.baidu.com
- https://www.cnblogs.com/yinzhengjie
- 10.0.0.31:3000
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.0.0.42:9115
2.查询PromQL语句
probe_duration_seconds
3.blackbox_exporter的http探针指标说明
3.1 probe_http_ssl
如上图所示,当probe_http_ssl的值为1时,表示该instance使用的是https协议。
3.2 probe_http_status_code
如上图所示,probe_http_status_code表示网站返回的状态码,如果为0表示探测失败!
3.3 probe_http_duration_seconds
如上图所示,probe_http_duration_seconds表示分阶段耗时统计。
3.4 probe_duration_seconds
如上图所示,probe_duration_seconds表示总耗时。
3.5 probe_success
如上图所示,probe_success表示探测是否成功,其中1表示探测成功,0表示探测失败。
四.ssh探测模块
1.配置ssh探测
- job_name: c
metrics_path: /probe
params:
module: [ssh_banner]
static_configs:
- targets:
- 10.0.0.41:22
- 10.0.0.43:22
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.0.0.42:9115
2.查询ssh相关的指标
如上图所示,我们可以根据job的标签来过滤我们采集的metrics指标信息哟。
查询方式: {job="yinzhengjie-blackbox-ssh"}
3.ssh探测原理
如上图所示,其实SSH探测的本质就是捕获是否响应了"^SSH-2.0-"相关字符串,若响应了则认为SSH服务存活。底层依旧使用的是tcp探针。
五.ping探测模块
1.配置icmp探测
- job_name: "yinzhengjie-blackbox-icmp"
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 10.0.0.43
- 10.0.0.44
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.0.0.42:9115
2.查询ssh相关的指标
如上图所示,我们可以根据job的标签来过滤我们采集的metrics指标信息哟。
查询方式: {job="yinzhengjie-blackbox-icmp"}
3.imcp探测原理
如上图所示,icmp底层用的是icmp探针,本质上可以理解为ping命令,发起的是icmp协议。
六.使用grafana展示blackbox数据
1.导入模板ID
如上图所示,我导入的模板ID为: 13659,可以看到监控的内容还是蛮丰富的。
2.学习优秀模板表格使用技巧
2.1 Value mappings(值映射)
如上图所示,之所以显示被监控的实例为UP或者DWON,根本原因是选择了做了数据的映射。
2.2 Thresholds(阈值)
如上图所示,我们可以定义多个Thresholds(阈值),从而让表格的背景色根据阈值来变化自定义的颜色。
2.3 Repeat for(重复以下步骤)
如上图所示,之所以有多个Row,是因为基于instance进行重复导致的。
七.blackbox适合配置告警指标
1.通用模块的指标
probe_success==0
探测失败则为0。
probe_duration_seconds > 5
探测时间阈值超过5秒。
probe_dns_lookup_time_seconds>3
DNS解析时间超过3秒。
2.http模块可用的告警指标
probe_http_status_code >= 400
HTTP接口返回状态码大于400的。
(probe_ssl_earliest_cert_expiry - time())/3600/24 < 15
HTTP证书过期时间小于15天的。
probe_http_duration_seconds{phase="connect"} > 5
HTTP探测耗时大于5秒的。
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
欢迎交流学习技术交流,个人微信: "JasonYin2020"(添加时请备注来源及意图备注)
作者: 尹正杰, 博客: https://www.cnblogs.com/yinzhengjie/p/18540807