Skip to content

Prometheus 监控实战系列 10:黑盒监控实战:Blackbox Exporter 实现服务可用性全场景探测

约 1622 字大约 5 分钟

Prometheus 监控实战系列Prometheus

2026-03-29

在Prometheus监控体系中,监控应用程序主要分为探针(黑盒)内省(白盒) 两种方式。黑盒监控(探针监控)聚焦于应用程序的外部特征探测,无需感知内部逻辑,仅通过网络层面验证服务是否可达、响应是否正常(如ICMP Ping、端口轮询、HTTP状态码校验等),是保障服务可用性的核心手段。本文将基于Prometheus生态的Blackbox Exporter,完整讲解黑盒监控的架构、部署、配置与实战落地。

一、黑盒监控核心架构

Prometheus通过Blackbox Exporter实现黑盒探测:Exporter主动探测远程目标,将采集的时序指标暴露在本地端点,Prometheus再从这些端点抓取指标,整体架构如下:

部署探针时需遵守三个核心约束:

  1. 探针必须能访问到被探测的目标资源;
  2. 探针部署位置需匹配测试场景(如测试外网访问则不能部署在防火墙内);
  3. 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.exeC:\blackbox_exporter,并添加路径到系统环境变量:

$env:Path += ";C:\blackbox_exporter"

步骤3:验证安装

C:\>blackbox_exporter.exe --version
# 预期输出与Linux版本一致

3.3 配置管理工具安装(生产环境推荐)

批量部署场景推荐使用配置管理工具,主流工具对应资源:

四、Blackbox Exporter 核心配置

Blackbox Exporter通过YAML配置文件定义探测模块,核心是“模块+探针”的组合,配置文件通过命令行参数指定。

4.1 创建配置文件

sudo mkdir -p /etc/prober
sudo touch /etc/prober/prober.yml

4.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_codeHTTP响应状态码(2XX为正常)
probe_success探测是否成功(1=成功,0=失败)
probe_durationSeconds探测总耗时(秒)
probe_http_SSL是否使用SSL加密(1=是,0=否)
probe_http_versionHTTP协议版本
probe_dns_lookup_time_secondsDNS解析耗时

配置完成后重启Prometheus,可在Prometheus控制台查看探测指标

八、小结

Blackbox Exporter是Prometheus实现黑盒监控的核心组件,通过模块化配置可覆盖HTTP、ICMP、DNS等全场景的服务可用性探测。核心步骤为:部署Exporter → 定义探测模块 → 配置Prometheus作业(重标记规则) → 抓取并分析指标。掌握黑盒监控可有效监控服务的外部可达性,是构建完整监控体系的关键一环。