黑盒探针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秒的。
posted @ 2024-11-11 23:29  尹正杰  阅读(44)  评论(0编辑  收藏  举报