超详细!Prometheus + blackbox_exporter实战
本文详细介绍了Prometheus官方工具blackbox_exporter的安装部署与配置方法。该工具支持HTTP、TCP、ICMP等多种协议探测,可实现端口存活检测、接口可用性监控、主机探活等功能。文章以192.168.38.148服务器为例,从环境准备、二进制包下载、服务配置到Prometheus集成,提供了完整的操作步骤。重点讲解了四种监控场景的配置方法,包括HTTP请求测试、POST接口
在日常服务器运维中,我们经常需要监控服务器端口存活、HTTP请求是否正常、主机是否在线等场景,而Prometheus官方提供的blackbox_exporter正好能满足这些需求。本文将详细讲解blackbox_exporter的核心作用、应用场景,并结合实际环境,一步步完成安装部署、服务配置及Prometheus集成,全程实操可直接照搬。
一、blackbox_exporter核心介绍
blackbox_exporter是Prometheus官方维护的 exporter 之一,核心功能是通过HTTP、DNS、TCP、ICMP等协议,对目标进行探测,采集监控数据,无需在被监控目标上安装任何代理,属于“黑盒监控”(无需了解目标内部结构,仅关注外部可访问性)。
核心应用场景
-
HTTP 测试:自定义请求头(Request Header),判断HTTP状态码、响应头(Response Header)、响应体(Body)内容是否符合预期,适用于接口可用性监控。
-
TCP 测试:监听业务组件的端口状态(如80、443、8080等),判断端口是否在线,适用于数据库、Web服务等端口监控。
-
ICMP 测试:通过ping命令实现主机探活,判断服务器是否正常运行,适用于主机可用性监控。
-
POST 测试:模拟POST请求,检测接口联通性及响应是否正常,适用于接口交互类监控。
-
SSL 证书过期时间:检测HTTPS证书的剩余有效期,提前预警证书过期风险。
二、环境说明与前期准备
1. 环境信息
-
服务器IP:192.168.38.148
-
系统:Linux(REHL9)
-
blackbox_exporter版本:(v0.28.0)
2. 前期准备
确保服务器已安装wget(用于下载安装包)、tar(用于解压),若未安装,执行以下命令:
yum install -y wget tar
apt update && apt install -y wget tar
确认Prometheus已正常运行,可通过访问 http://192.168.38.148:9090 验证
安装参考https://mp.csdn.net/mp_blog/creation/editor/160900959
三、blackbox_exporter安装部署(同机部署)
本次安装采用官方预编译二进制包,无需编译,直接下载、解压、配置即可,步骤如下:
1. 下载最新版本安装包
从Prometheus官方下载地址(https://prometheus.io/download/)获取blackbox_exporter,本文使用v0.28.0执行以下命令下载:
# 进入数据目录
cd /data
# 下载blackbox_exporter v0.28.0 二进制包
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.28.0/blackbox_exporter-0.28.0.linux-amd64.tar.gz
# 验证下载文件
# 官方SHA256校验值:caf5d242fb1cf6d5cb678f3f799f22703d4fafea26b03dcbbd7e1f1825e06329
sha256sum blackbox_exporter-0.28.0.linux-amd64.tar.gz
2. 解压并配置目录
解压下载的压缩包,并将目录重命名为blackbox_exporter,执行命令:
# 解压压缩包
tar -zxvf blackbox_exporter-0.28.0.linux-amd64.tar.gz
# 重命名目录
mv blackbox_exporter-0.28.0.linux-amd64 blackbox_exporter
# 进入解压后的目录,查看文件
cd blackbox_exporter
ls
执行ls命令后,会看到以下文件:
blackbox_exporter(可执行文件)、blackbox.yml(默认配置文件)、LICENSE(许可证文件)、NOTICE(说明文件)

3. 配置文件说明(无需修改,直接使用)
默认配置文件blackbox.yml已包含常用的探测模块,无需手动修改,可直接使用。执行以下命令查看配置文件内容及含义:
cat blackbox.yml
配置文件核心内容及说明:
modules:
http_2xx: # 模块名称,需与Prometheus配置对应,保持默认即可
prober: http # 探测协议(http),用于HTTP请求测试
timeout: 10s # 探测超时时间,10秒未响应则判定为失败
http_post_2xx: # POST请求测试模块
prober: http
http:
method: POST # 探测方式为POST
tcp_connect: # TCP端口探测模块,用于监控端口存活
prober: tcp
icmp: # ICMP探测模块,用于主机ping测试(探活)
prober: icmp
说明:默认配置已覆盖本文所需的所有场景(HTTP、POST、TCP、ICMP),无需额外添加模块,直接使用即可。
四、添加blackbox_exporter为系统服务(开机自启)
为了方便管理blackbox_exporter服务(启动、停止、开机自启),将其配置为系统服务,步骤如下:
1. 创建系统服务文件
创建/usr/lib/systemd/system/blackbox_exporter.service文件,执行命令:
vi /usr/lib/systemd/system/blackbox_exporter.service
写入以下内容(注意路径与我们的安装目录一致):
[Unit]
Description=blackbox_exporter # 服务描述
After=network.target # 网络启动后再启动该服务
[Service]
Type=simple
User=root # 运行用户
Group=root # 运行用户组
# 启动命令,指定配置文件路径和监听端口
ExecStart=/data/blackbox_exporter/blackbox_exporter \
--config.file=/data/blackbox_exporter/blackbox.yml \
--web.listen-address=:9115
Restart=on-failure # 服务失败时自动重启
[Install]
WantedBy=multi-user.target # 多用户模式下开机自启
2. 启动服务并设置开机自启
执行以下命令,重新加载系统服务配置,启动blackbox_exporter,并设置开机自启:
# 重新加载系统服务配置
systemctl daemon-reload
# 启动blackbox_exporter服务
systemctl start blackbox_exporter
# 设置开机自启
systemctl enable blackbox_exporter
# 查看服务运行状态
systemctl status blackbox_exporter

若服务状态显示“active (running)”,则说明blackbox_exporter启动成功,默认监听9115端口。可通过以下命令验证端口是否正常监听:
netstat -tuln | grep 9115
出现如图所示即为正常
![]()
五、在Prometheus中集成blackbox_exporter(核心步骤)
由于blackbox_exporter与Prometheus同机部署(IP:192.168.38.148),因此在Prometheus配置文件中,直接通过127.0.0.1:9115访问blackbox_exporter即可,无需配置跨机网络。
1. 修改Prometheus配置文件(prometheus.yml)
首先找到Prometheus的配置文件路径(默认路径为/etc/prometheus/prometheus.yml,若你自定义了路径,请替换为实际路径),执行命令编辑配置文件:
vi /etc/prometheus/prometheus.yml
在配置文件的“scrape_configs”节点下,添加以下4个监控任务(对应HTTP、POST、ICMP、TCP四种探测场景),注意缩进规范(YAML格式对缩进敏感):
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 1. 本机HTTP GET接口监控
- job_name: 'blackbox_http_2xx'
scrape_interval: 30s
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- http://192.168.38.148:9090
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
# 2. HTTP POST探测(本机预留,可后续加接口)
- job_name: 'blackbox_http_post_2xx'
scrape_interval: 30s
metrics_path: /probe
params:
module: [http_post_2xx]
static_configs:
- targets:
- 192.168.38.148:8080
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
# 3. ICMP本机探活
- job_name: 'blackbox_icmp_ping'
scrape_interval: 30s
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 192.168.38.148
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
# 4. 本机TCP端口监控
- job_name: 'blackbox_tcp_connect'
scrape_interval: 30s
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- 192.168.38.148:9090
- 192.168.38.148:9115
- 192.168.38.148:80
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
说明:
-
所有replacement均为127.0.0.1:9115,因为同机部署,无需使用192.168.38.148:9115,本地访问更高效。
-
添加了192.168.38.148的相关监控目标(Prometheus端口、本地主机),用于验证同机部署的连通性。
-
保留了http://192.168.38.148:80/status 这个报错目标,可用于后续验证监控是否能正常捕获异常。
2. 重启Prometheus,使配置生效
配置文件修改完成后,重启Prometheus服务,执行命令:
systemctl restart prometheus
查看Prometheus服务状态,确认重启成功:
systemctl status prometheus

六、验证监控配置(必做步骤)
配置完成后,通过Prometheus的Web界面验证监控目标是否正常,步骤如下:
-
访问Prometheus Web界面:打开浏览器,输入 http://192.168.38.148:9090 ,进入Prometheus控制台。
-
查看监控目标:点击左侧菜单栏的“Status” → “Targets”,进入目标监控页面。

-
验证目标状态:页面会显示我们配置的4个监控任务(blackbox_http_2xx、blackbox_http_post_2xx、blackbox_icmp_ping、blackbox_tcp_connect),正常情况下,除了http://192.168.38.148:80/status 显示“Down”(报错目标),其余目标均显示“Up”。
补充:若某个目标显示“Down”,可通过以下命令排查:
# 查看blackbox_exporter日志,排查探测失败原因
journalctl -u blackbox_exporter -f
# 手动测试探测目标
/data/blackbox_exporter/blackbox_exporter --config.file=/data/blackbox_exporter/blackbox.yml --web.listen-address=:9115
# 另开一个终端,执行探测命令
curl "http://127.0.0.1:9115/probe?target=http://192.168.38.148:9090&module=http_2xx"
若返回结果中包含“probe_success 1”,说明探测成功;若为“probe_success 0”,则说明探测失败,需检查目标地址、端口或网络。
七、常见问题排查(避坑指南)
1. blackbox_exporter启动失败
原因:端口9115被占用、配置文件路径错误、权限不足。
解决:
-
查看端口占用:netstat -tuln | grep 9115,杀死占用端口的进程。
-
检查配置文件路径:确保ExecStart中的--config.file路径与实际安装路径一致。
-
提升权限:确保blackbox_exporter目录及文件的所有者为root,执行chown -R root:root /data/blackbox_exporter。
2. Prometheus中监控目标显示“Down”
原因:blackbox_exporter服务未启动、replacement配置错误、监控目标不可达。
解决:
-
确认blackbox_exporter服务正常运行:systemctl status blackbox_exporter。
-
检查replacement配置:确保所有监控任务的replacement为127.0.0.1:9115(同机部署)。
-
验证监控目标可达:在服务器上ping目标IP,或telnet目标端口(如telnet 192.168.38.148 9090)。
3. 报错“网页解析失败,可能是不支持的网页类型”
说明:该报错是http://192.168.38.148:80/status 目标本身的问题,属于正常现象,可用于验证监控是否能捕获异常,无需处理。若需避免该报错,可将该目标替换为你的实际可用目标地址。
八、总结
本文详细讲解了blackbox_exporter的核心功能、应用场景,并结合192.168.38.148服务器的同机部署场景,完成了从安装部署、服务配置到Prometheus集成的全流程实操。通过本文的配置,可实现HTTP接口、POST接口、主机探活、TCP端口的全方位监控,满足日常运维的核心需求。
后续可结合Grafana配置监控面板,更直观地展示监控数据,或配置Prometheus Alertmanager实现异常告警(如端口down、接口访问失败时自动告警),进一步完善监控体系。
如果在实操过程中遇到问题,可留言交流,我会及时回复排查思路~
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)