blackbox_exporter的使用
- 1、下载
- 2、编写 blackbox.yml 配置文件
- 3、启动 blackbox_exporter
- 4、和 prometheus 集成
- 5、在 grafana 中查看。
- 6、如果需要监控告警
- 三、参考链接
一、需求
有些时候,我们想监听服务器的某个端口是否存在,监听http的请求是否正确时,这个时候就可以使用 blackbox_exporter
来实现。
注意:
blackbox exporter 可以实现对 http
,https
,tcp(可以实现服务器接口是否在线)
,icmp(实现主机探活)
,dns
的探测。
二、blackbox_exporter的安装
1、下载
# 下载
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.darwin-amd64.tar.gz
# 解压
tar -zxvf blackbox_exporter-0.18.0.darwin-amd64.tar.gz
# 重命名
mv blackbox_exporter-0.18.0.darwin-amd64/ blackbox_exporter
# 进入 blackbox_exporter 目录
cd blackbox_exporter
下载地址-https://github.com/prometheus/blackbox_exporter/releases
2、编写 blackbox.yml 配置文件
modules
http_2xx# 这个名字是随便写的,但是需要在 prometheus.yml 配置文件中对应起来。
prober http # 进行探测的协议,可以是 http、tcp、dns、icmp
timeout 10s
http_post_2xx
prober http
http
method POST
tcp_connect# tcp检测,比如检测某个端口是否在线
prober tcp
icmp# icmp 检测,比如ping某个服务器
prober icmp
注意:
1、上方模块中 http
或 icmp
等的配置不全,这个可以通过访问 https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md查看完整的配置。
2、如果要使用 icmp
,那么针对不同的操作系统可能要提升权限。
3、启动 blackbox_exporter
nohup /Users/huan/soft/prometheus/blackbox_exporter/blackbox_exporter \
--config.file="/Users/huan/soft/prometheus/blackbox_exporter/blackbox.yml" \
--web.listen-address=":9098" \
--log.level=debug \
> logs/blackbox.out 2>&1 &
4、和 prometheus 集成
prometheus.yml
配置文件的编写。
scrape_configs
job_name'blackbox_http_2xx' # 配置get请求检测
scrape_interval 30s
metrics_path /probe
params
module http_2xx
static_configs
targets# 测试如下的请求是否可以访问的通
127.0.0.1:10005
http://127.0.0.1:10005/hello/zhangsan
relabel_configs
source_labels __address__
target_label __param_target
source_labels __param_target
target_label instance
target_label __address__
replacement 127.0.0.1 9098 # blackbox-exporter 服务所在的机器和端口
job_name'blackbox_http_post_2xx' # 配置post请求检测
scrape_interval 30s
metrics_path /probe
params
module http_post_2xx
static_configs
targets# 测试如下的post请求是否可以访问的通,该post请求不带参数
127.0.0.1:10005
relabel_configs
source_labels __address__
target_label __param_target
source_labels __param_target
target_label instance
target_label __address__
replacement 127.0.0.1 9098 # blackbox-exporter 服务所在的机器和端口
job_name'blackbox_http_ping' # 检测是否可以ping通某些机器
scrape_interval 30s
metrics_path /probe
params
module icmp
static_configs
targets
127.0.0.1
relabel_configs
source_labels __address__
target_label __param_target
source_labels __param_target
target_label instance
target_label __address__
replacement 127.0.0.1 9098 # blackbox-exporter 服务所在的机器和端口
job_name'blackbox_tcp_connect' # 检测某些端口是否在线
scrape_interval 30s
metrics_path /probe
params
module tcp_connect
static_configs
targets
127.0.0.1:10006
127.0.0.1:10005
relabel_configs
source_labels __address__
target_label __param_target
source_labels __param_target
target_label instance
target_label __address__
replacement 127.0.0.1 9098 # blackbox-exporter 服务所在的机器和端口
手动访问
手动访问 tcp_connect
这个模板(在blackbox.yml配置文件中执行的),判断 127.0.0.1机器上的10005端口是否是通的。
curl http://127.0.0.1:9098/probe?target=127.0.0.1:10005&module=tcp_connect&debug=true
解释:
1、在 job 等于 blackbox_http_2xx 和 blackbox_http_post_2xx 我们测试来某个 get 和 post 请求是否可以访问的通。
2、在 job 等于 blackbox_tcp_connect 中 测试来某个端口是否是通的。
5、在 grafana 中查看。
1、先在grafana网站上搜索一个 blackbox_exporter 的图表,此处我选择的是 12275
。
2、导入到 grafana 中,并根据自己的实际情况做一些微改。
6、如果需要监控告警
1、probe_success
指标可以判断我们的 icmp、tcp、http、post 监测是否正常。值为 1 正常,0不正常。
2、probe_http_status_code
指标可以知道某个http请求返回的响应码。
3、probe_ssl_earliest_cert_expiry
指标可以知道ssl证书何时过期。
三、参考链接
1、blackbox_exporter的下载地址 2、blackbox.yml的编写例子 3、blackbox.yml中可以编写的配置属性