Blackbox_Exporter
Blackbox Exporter是一个用于黑盒情况下探测服务状态的一个工具。在Exporter内部,定义了一系列执行特定检查的模块,例如,检查Web服务器是否正在运行,DNS记录是否解析,通过ICMP检查ping目标的结果等。
安装
Linux
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.22.0/blackbox_exporter-0.22.0.linux-amd64.tar.gz
tar -zxf blackbox_exporter-0.22.0.linux-amd64.tar.gz
cp blackbox_exporter-0.22.0.linux-amd64/blackbox_exporter /usr/bin/
cat > /etc/systemd/system/blackbox_exporter.service << EOF
[Unit]
Description=Blackbox Exporter Daemon
[Service]
ExecStart=/usr/bin/blackbox_exporter --config.file=/etc/blackbox_exporter.yml
User=root
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOFblackbox.yml配置文件示例
modules:
http_2xx:
prober: http
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服务控制及验证
将Blackbox Exporter配置为systemd管理之后就可以使用systemctl命令来进行服务管理
systemctl enable blackbox_exporter
systemctl start|status|stop blackbox_exporter通过浏览器访问http://ip:9115即可浏览控制台
通过http://ip:9115/probe?module=http_2xx&target=www.baidu.com格式即可看到检测信息 
在Prometheus中调用Blackbox Exporter
编辑Prometheus的配置文件prometheus.yml,添加如下内容
……
scrape_configs:
……
- job_name: "http_2xx"
metrics_path: /probe
params:
module: [http_2xx]
file_sd_configs:
- files:
- /etc/prometheus/prober/http_2xx.json
refresh_interval: 5m
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: ip:9115
- job_name: "tcp_connect"
metrics_path: /probe
params:
module: [tcp_connect]
file_sd_configs:
- files:
- /etc/prometheus/prober/tcp_connect.json
refresh_interval: 5m
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 172.23.210.21:9115
……relabel_configs配置解释: 通过三重标记来实现Prometheus获取检测网站的信息
第一重新标记通过将
__address__标签(当前目标的地址)写入__param_target标签来创建参数;第二个重新标记将
__param_target标签写入instance标签;最后,使用exporter的主机名(ip:9115)来重新标记
__address__标签,
通过http_2xx.json文件来管理要检测的http服务 http_2xx.json文件按如下格式依次填写对应要检测的域名即可
[{
"targets": [
"www.baidu.com",
"www.sina.com.cn"
]
}]tcp_connect.json
[{
"targets": [
"172.23.50.23:2181",
"172.23.200.36:8848",
"172.23.50.22:3306",
"172.23.6.74:5290"
]
}]最后更新于