一、监控目标
Node Exporter主要用于监控服务器自身资源,例如CPU、内存、磁盘和网络。
即使服务器资源正常,网站也可能因为Nginx、应用服务、端口映射或防火墙问题无法访问。因此,仅依靠Node Exporter无法判断网站页面是否正常打开。
Blackbox Exporter可以从HTTP访问角度探测指定URL,检查网站是否能够返回正常响应。
本文主要介绍如何使用Blackbox Exporter监控网站HTTP可用性。
二、安装组件
本次使用的组件版本为:
prometheus-blackbox-exporter 0.24.0-2ubuntu0.3
Blackbox Exporter默认监听:
9115
安装完成后,可以检查服务状态:
sudo systemctl status prometheus-blackbox-exporter --no-pager
检查9115端口:
sudo ss -lntp | grep ':9115'
如果服务状态正常,并且9115端口正在监听,说明Blackbox Exporter已经启动。
三、配置Prometheus探测任务
本次Prometheus任务名称为:
blackbox_http
探测目标包括:
http://127.0.0.1/
http://60.174.234.119:56121/login
其中:
http://127.0.0.1/用于检查服务器本机网站入口。http://60.174.234.119:56121/login用于检查经过公网端口映射后的登录页面。
在Prometheus配置文件中加入以下内容:
- job_name: blackbox_http
metrics_path: /probe
params:
module:
- http_2xx
static_configs:
- targets:
- http://127.0.0.1/
- http://60.174.234.119:56121/login
relabel_configs:
- source_labels:
- __address__
target_label: __param_target
- source_labels:
- __param_target
target_label: instance
- target_label: __address__
replacement: localhost:9115
这段配置的作用如下:
metrics_path: /probe表示通过Blackbox Exporter的探测接口获取结果。module: http_2xx表示使用HTTP探测模块,并将HTTP 2xx响应视为成功。__param_target保存实际要探测的URL。instance标签保存目标URL,便于在Prometheus和Grafana中区分不同网站。replacement: localhost:9115表示Prometheus将请求发送给本机9115端口上的Blackbox Exporter。
修改Prometheus配置后,先检查语法:
promtool check config /etc/prometheus/prometheus.yml
校验通过后重启Prometheus:
sudo systemctl restart prometheus
四、验证Prometheus Targets
打开Prometheus的Targets页面,检查blackbox_http任务状态。
如果配置正确,blackbox_http应显示为UP。
需要注意,Targets显示为UP主要说明Prometheus能够访问Blackbox Exporter,并不一定代表每个网站都能访问。
网站实际探测结果还需要查看probe_success等指标。
如果Targets为DOWN,应检查:
- Prometheus配置文件是否正确。
- Blackbox Exporter是否正常运行。
- 9115端口是否正在监听。
- Prometheus是否能够访问
localhost:9115。 - 配置修改后是否已经重启或重新加载Prometheus。
五、查看核心指标
1. 网站是否可以访问
执行以下PromQL:
probe_success{job="blackbox_http"}
返回值含义:
1:探测成功
0:探测失败
在Prometheus中查询后,可以根据instance标签区分不同URL。
2. 查看HTTP状态码
使用以下PromQL:
probe_http_status_code{job="blackbox_http"}
该指标可以查看被探测网站返回的HTTP状态码。
常见状态码包括:
200:请求成功。301或302:发生跳转。403:访问被拒绝。404:页面不存在。500:应用内部错误。502:网关无法连接上游服务。503:服务暂时不可用。
由于当前模块使用http_2xx判断成功,如果网站最终返回的状态码不是2xx,probe_success可能返回0。
3. 查看探测耗时
使用以下PromQL:
probe_duration_seconds{job="blackbox_http"}
该指标表示Blackbox Exporter完成一次HTTP探测所消耗的时间。
探测耗时持续升高时,可以进一步检查:
- Nginx处理速度。
- 后端应用响应时间。
- 数据库查询耗时。
- 网络延迟。
- 服务器资源使用情况。
六、配置Grafana可用性看板
在Grafana中,可以根据Blackbox Exporter指标创建Web可用性看板。
看板可以展示:
- 网站探测是否成功。
- HTTP响应状态码。
- HTTP探测耗时。
- Nginx活跃连接数。
- Nginx请求速率。
其中,网站探测结果可以使用:
probe_success{job="blackbox_http"}
HTTP状态码可以使用:
probe_http_status_code{job="blackbox_http"}
探测耗时可以使用:
probe_duration_seconds{job="blackbox_http"}
如果同时接入Nginx Exporter,还可以在同一个看板中展示Nginx连接数和请求速率。
七、故障现象与排查方向
公网URL探测失败,内网URL正常
如果本机地址探测正常,但公网地址探测失败,说明应用本身可能正在运行,问题更可能出现在外部访问链路。
常见原因包括:
- 公网端口映射异常。
- 云平台安全组没有放行端口。
-服务器防火墙拦截请求。 - Nginx反向代理配置异常。
- 域名解析地址错误。
- 公网访问使用了错误的协议或端口。
- 公网URL对应的路径不存在。
这时可以先用curl直接请求公网地址:
curl -I "http://60.174.234.119:56121/login"
再结合Nginx访问日志和错误日志继续判断。
内网URL和公网URL都探测失败
如果两个地址都无法访问,常见原因包括:
- 应用服务没有启动。
- Nginx服务没有启动。
- 本机网站端口没有监听。
- 网站配置中的监听地址错误。
- Blackbox Exporter模块配置错误。
- Prometheus目标URL写错。
可以先检查网站和Nginx服务,再确认本机端口:
sudo ss -lntp
八、验证命令
可以直接请求Blackbox Exporter的探测接口:
curl "http://127.0.0.1:9115/probe?target=http://127.0.0.1/&module=http_2xx"
返回结果中通常会包含:
probe_success 1
如果返回probe_success 0,应继续查看HTTP状态码、探测耗时和其他探测指标。
检查Blackbox Exporter服务:
sudo systemctl status prometheus-blackbox-exporter --no-pager
检查9115端口:
sudo ss -lntp | grep ':9115'
如果使用系统服务启动,还可以查看日志:
sudo journalctl -u prometheus-blackbox-exporter --no-pager -n 100
九、生产环境的探测目标
生产环境不建议只探测服务器根路径,可以根据业务情况增加以下目标:
- 网站首页。
- 用户登录页。
- 健康检查接口。
- 核心API。
- 公网域名。
- 关键业务页面。
不同URL可以用于定位不同问题。例如:
- 首页失败,可能是Web服务或反向代理异常。
- 登录页失败,可能是应用服务或认证模块异常。
- 健康检查接口失败,可能是后端服务异常。
- 公网域名失败,可能是DNS、证书、端口映射或防火墙问题。
探测目标应选择稳定、无需复杂交互即可返回结果的地址。
十、配置可用性告警
可以根据probe_success配置网站不可访问告警。
示例PromQL:
probe_success{job="blackbox_http"} == 0
建议设置一定的持续时间,避免网络瞬时抖动产生误报。例如:
for: 2m
这表示网站探测失败持续2分钟后,才正式触发告警。
同时可以对探测耗时设置告警,例如:
probe_duration_seconds{job="blackbox_http"} > 3
实际阈值应结合网站正常响应时间进行调整。
十一、注意事项
Blackbox Exporter的探测位置会影响结果。
如果Blackbox Exporter和网站部署在同一台服务器上,探测结果主要反映本机访问情况,不能完全代表外部用户的访问体验。
如果需要更接近真实访问效果,可以将Blackbox Exporter部署在独立服务器或外部监控节点上,通过公网域名进行探测。
此外,还需要注意:
- 不要只监控服务器资源。
- 不要只探测本机地址。
- 不要把登录接口的敏感参数写入探测URL。
- 不要将监控端口直接暴露给所有公网用户。
- 对不同业务入口设置不同探测目标。
- 根据业务情况设置失败持续时间和告警阈值。
十二、总结
Blackbox Exporter解决的是“网站能不能访问”的问题,Node Exporter则主要反映服务器自身资源和运行状态。
对于小型网站,以下指标最值得优先关注:
probe_success{job="blackbox_http"}
当返回值为1时,说明当前探测成功;返回0时,说明网站或访问链路存在异常。
结合HTTP状态码和探测耗时,可以进一步判断问题发生在应用、Nginx、端口映射、防火墙还是公网访问链路中。完成基础配置后,建议继续为probe_success增加告警规则,让网站不可访问时能够及时收到通知。
-
广告合作
-
QQ群号:4114653






