Prometheus 监控实战系列 10:黑盒监控实战:Blackbox Exporter 实现服务可用性全场景探测
在Prometheus监控体系中,监控应用程序主要分为探针(黑盒) 和内省(白盒) 两种方式。黑盒监控(探针监控)聚焦于应用程序的外部特征探测,无需感知内部逻辑,仅通过网络层面验证服务是否可达、响应是否正常(如ICMP Ping、端口轮询、HTTP状态码校验等),是保障服务可用性的核心手段。本文将基于Prometheus生态的Blackbox Exporter,完整讲解黑盒监控的架构、部署、配置与实战落地。
一、黑盒监控核心架构
Prometheus通过Blackbox Exporter实现黑盒探测:Exporter主动探测远程目标,将采集的时序指标暴露在本地端点,Prometheus再从这些端点抓取指标,整体架构如下:
部署探针时需遵守三个核心约束:
- 探针必须能访问到被探测的目标资源;
- 探针部署位置需匹配测试场景(如测试外网访问则不能部署在防火墙内);
- Prometheus服务器需能抓取到探针Exporter的指标端点。
通常探针会部署在企业网络外的多地域节点,最大化覆盖故障检测范围;小规模场景可自行部署,大规模场景可借助第三方商业探针服务。
二、Blackbox Exporter 核心介绍
Blackbox Exporter是基于Go语言开发(Apache 2.0协议)的黑盒探测工具,支持HTTP/HTTPS、DNS、TCP、ICMP等多协议的端点探测。其核心特性是通过模块定义探测规则(如HTTP状态码校验、DNS解析检查),Prometheus通过URL参数传递探测目标和模块,Exporter执行检查后返回指标。
三、Blackbox Exporter 安装部署
Blackbox Exporter支持Linux、Windows、macOS等多平台,可通过二进制包或配置管理工具安装(本文以v0.12.0版本为例)。
3.1 Linux 平台安装(64位)
步骤1:下载二进制包
cd /tmp
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0-linux-amd64.tar.gz步骤2:解压并移动到可执行路径
tar -xzf blackbox_exporter-0.12.0-linux-amd64.tar.gz
sudo cp blackbox_exporter-0.12.0-linux-amd64/blackbox_exporter /usr/local/bin/步骤3:验证安装
blackbox_exporter --version
# 预期输出:blackbox_exporter, version 0.12.0 (branch: HEAD, revision: 30dd0426c08b6479d9a26259ea5efd63bc1ee273)3.2 Windows 平台安装
步骤1:创建目录并下载二进制包
C:\> MKDIR blackbox_exporter
C:\> CD blackbox_exporter下载地址:https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0.windows-amd64.tar.gz
步骤2:解压并配置环境变量
用7-Zip解压blackbox_exporter.exe到C:\blackbox_exporter,并添加路径到系统环境变量:
$env:Path += ";C:\blackbox_exporter"步骤3:验证安装
C:\>blackbox_exporter.exe --version
# 预期输出与Linux版本一致3.3 配置管理工具安装(生产环境推荐)
批量部署场景推荐使用配置管理工具,主流工具对应资源:
- Puppet:https://forge.puppet.com/puppet/prometheus
- Chef:https://supermarket.chef.io/cookbooks/prometheus-platform
- Ansible:https://github.com/cloudalchemy/ansible-prometheus
- SaltStack:https://github.com/arnisoph/saltstack-prometheus-formula
四、Blackbox Exporter 核心配置
Blackbox Exporter通过YAML配置文件定义探测模块,核心是“模块+探针”的组合,配置文件通过命令行参数指定。
4.1 创建配置文件
sudo mkdir -p /etc/prober
sudo touch /etc/prober/prober.yml4.2 核心配置示例(多场景探测)
modules:
# HTTP 2XX 状态码检查
http_2xx_check:
prober: http
timeout: 5s
http:
valid_status_codes: [] # 默认识别所有2XX状态码,可自定义如['200','304']
method: GET
# ICMP Ping 检查
icmp_check:
prober: icmp
timeout: 5s
icmp:
preferred_ip_protocol: "ip4" # 优先IPv4
# DNS 解析检查(示例:解析www.example.com)
dns_examplecom_check:
prober: dns
dns:
preferred_ip_protocol: "ip4"
query_name: "www.example.com" # 待解析的域名4.3 各探针配置详解
(1)HTTP 探针
用于校验HTTP/HTTPS服务的可用性,核心参数:
valid_status_codes:指定合法状态码(数组格式,如['200','304']);method:请求方法(GET/POST等);- 扩展能力:可校验HTTP版本、SSL加密、响应内容正则匹配等。
(2)ICMP 探针
用于执行Ping检测,需注意权限:
- Linux:需root或CAP_NET_RAW权限;
- Windows:需管理员权限;
- BSD/OS X:需root用户。
(3)DNS 探针
用于校验DNS解析是否正常,默认检查NOERROR响应码,可通过query_type指定查询类型、valid_rcodes指定合法响应码。
五、启动Blackbox Exporter
sudo blackbox_exporter --config.file="/etc/prober/prober.yml"Exporter默认监听9115端口,可通过以下地址验证:
- 控制台页面:
http://localhost:9115(图10-2 Blackbox exporter控制台) - 指标端点:
http://localhost:9115/metrics(包含Exporter自身监控指标)
控制台可查看最近探测记录、状态及调试日志,便于故障排查。
六、配置Prometheus作业抓取探测指标
Blackbox Exporter的指标抓取逻辑特殊,需通过relabel_configs重标记规则关联“探测目标”和“Exporter地址”,以下以HTTP探测为例说明。
6.1 HTTP 探测作业配置
- job_name: 'httpprobe'
metrics_path: /probe # 指定Exporter的探测端点
params:
module: [http_2xx_check] # 关联定义好的HTTP探测模块
file_sd_config: # 基于文件的服务发现(指定探测目标)
- files:
- 'targets/probes/http_probes.json'
refresh_interval: 5m
relabel_configs:
# 1. 将目标地址写入__param_target参数(传递给Exporter)
- source_labels: [__address__]
target_label: __param_target
# 2. 将目标地址写入instance标签(便于可视化区分)
- source_labels: [__param_target]
target_label: instance
# 3. 重定向抓取地址到Blackbox Exporter的地址
- target_label: __address__
replacement: prober.example.com:9115 # 替换为你的Exporter地址6.2 定义HTTP探测目标(http_probes.json)
{
"targets": [
"http://www.example.com",
"https://www.example.com"
]
}6.3 重标记规则解析
最终Prometheus会构造如下URL抓取指标: http://prober.example.com:9115/probe?target=www.example.com&module=http_2xx_check
ICMP、DNS探测作业的配置逻辑与HTTP一致,仅需替换module参数和探测目标文件。
七、关键探测指标解读
以HTTP探测为例,核心指标如下(其他协议类似):
| 指标名 | 含义 |
|---|---|
| probe_http_status_code | HTTP响应状态码(2XX为正常) |
| probe_success | 探测是否成功(1=成功,0=失败) |
| probe_durationSeconds | 探测总耗时(秒) |
| probe_http_SSL | 是否使用SSL加密(1=是,0=否) |
| probe_http_version | HTTP协议版本 |
| probe_dns_lookup_time_seconds | DNS解析耗时 |
配置完成后重启Prometheus,可在Prometheus控制台查看探测指标
八、小结
Blackbox Exporter是Prometheus实现黑盒监控的核心组件,通过模块化配置可覆盖HTTP、ICMP、DNS等全场景的服务可用性探测。核心步骤为:部署Exporter → 定义探测模块 → 配置Prometheus作业(重标记规则) → 抓取并分析指标。掌握黑盒监控可有效监控服务的外部可达性,是构建完整监控体系的关键一环。
