Blackbox_exporter简介
Blackbox_exporter是以HTTP、HTTPS、DNS、TCP、ICMP等方式对目标进行检测,可在应用外部进行探测的黑盒监控。
官网下载地址:
https://github.com/prometheus/blackbox_exporter
适用场景:
1. HTTP/HTTPS:URL/API可用性检测
2. ICMP:主机存活检测(服务探活)
3. TCP:端口活性检测
4. DNS:域名解析
5. SSL证书过期时间
部署Blackbox_exporter
下载软件包:
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
解压、重命名、授权
tar -xzf blackbox_exporter-0.23.0.linux-amd64.tar.gz -C /opt/
cd /opt
mv blackbox_exporter-0.23.0.linux-amd64/ blackbox_exporter
chown -R root.root /opt/blackbox_exporter
配置systemd启动
cat > /usr/lib/systemd/system/blackbox_exporter.service << EOF
[Unit]
Description=blackbox_exporter
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/blackbox_exporter/blackbox_exporter \
--config.file=/opt/blackbox_exporter/blackbox.yml \
--web.listen-address=:9115
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
启动并设置开机自启
systemctl daemon-reload
systemctl start blackbox_exporter.service
systemctl enable blackbox_exporter.service
systemctl status blackbox_exporter.service
blackbox-exporter的配置文件使用默认的即可(/opt/blackbox_exporter/blackbox.yml),文件里定义了进行目标检测时要使用的模块和模块参数。至于要检测哪些目标是定义在Prometheus 的Job配置中
modules:
http_2xx:
prober: http
http:
preferred_ip_protocol: "ip4"
http_post_2xx:
prober: http
http:
method: POST
tcp_connect:
prober: tcp
pop3s_banner:
prober: tcp
tcp:
query_response:
- expect: "^+OK"
tls: true
tls_config:
insecure_skip_verify: false
grpc:
prober: grpc
grpc:
tls: true
preferred_ip_protocol: "ip4"
grpc_plain:
prober: grpc
grpc:
tls: false
service: "service1"
ssh_banner:
prober: tcp
tcp:
query_response:
- expect: "^SSH-2.0-"
- send: "SSH-2.0-blackbox-ssh-check"
irc_banner:
prober: tcp
tcp:
query_response:
- send: "NICK prober"
- send: "USER prober prober prober :prober"
- expect: "PING :([^ ]+)"
send: "PONG ${1}"
- expect: "^:[^ ]+ 001"
icmp:
prober: icmp
icmp_ttl5:
prober: icmp
timeout: 5s
icmp:
ttl: 5
访问ip+9115,出现以下状态,即成功
blackbox-exporter实现url监控,修改prometheus.yml,内容如下:
参考https://prometheus.io/docs/guides/multi-target-exporter/
- job_name: http_check
metrics_path: /probe #指定指标接口
params: #指定查询参数,在Prometheus向target发送Get请求获取指标数据时,会传递到url上
module: [http_2xx]
static_configs:
- targets:
- 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.x.x:9115
#以 http://www.baidu.com为例,最后其对应target的地址就是http://192.168.x.x:9115/probe?module=http_2xx&target=http://www.jd.com
配置修改完成后重启Prometheus,在prometheus界面查看target状态
访问blackbox-exporter界面查看数据
blackbox-exporter实现ICMP监控,修改prometheus.yml
- 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.x.x:9115
访问blackbox-exporter界面查看数据(同上)
blacbox-exporter实现端口监控,修改prometheus.yml
- 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.x.x:9115
Grafana导入模板
模板ID: 9965
导入模板,查看数据。