1. blackbox_exporter 概述
blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集。
- HTTP 测试
定义 Request Header 信息
判断 Http status / Http Respones Header / Http Body 内容 - TCP 测试
业务组件端口状态监听
应用层协议定义与监听 - ICMP 测试
主机探活机制 - POST 测试
接口联通性 - SSL 证书过期时间
2. black_exporter 安装
2.1 docker 方式安装
docker pull prom/blackbox-exporter
docker run -d -p 9115:9115 --name blackbox-exporter prom/blackbox-exporter
2.2 宿主机安装
下载地址-https://github.com/prometheus/blackbox_exporter/releases
# 下载
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.19.0.darwin-amd64.tar.gz
# 解压
tar -zxvf blackbox_exporter-0.19.0.darwin-amd64.tar.gz
# 重命名
mv blackbox_exporter-0.19.0.darwin-amd64/ blackbox_exporter
# 进入 blackbox_exporter 目录
cd blackbox_exporter
# 启动
nohup ./blackbox_exporter --web.listen-address=:9115 --config.file=/home/apps/blackbox_exporter/blackbox.yml &
默认监听9115端口:
# ss -tunlp|grep 9115
tcp LISTEN 0 32768 *:9115 *:* users:(("blackbox_export",29880,3))
blackbox.yml 配置文件介绍,具体配置参考https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md:
modules:
http_2xx: # http监测模块,这个名字是随便写的,但是需要在 prometheus.yml 配置文件中对应起来。
prober: http # 进行探测的协议,可以是 http、tcp、dns、icmp
timeout: 10s
http_post_2xx: # http post检测模块
prober: http
http:
method: POST
tcp_connect: # tcp检测,比如检测某个端口是否在线
prober: tcp
icmp: # icmp 检测,比如ping某个服务器
prober: icmp
3. 和prometheus集成
prometheus.yaml配置文件:
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:9115 # 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:9115 # 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:9115 # 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:9115 # blackbox-exporter 服务所在的机器和端口
4. grafana 展示
选择模板导入,此处选择的是12275
https://grafana.com/grafana/dashboards/12275