首页软件使用教程Blackbox Exporter监控网站HTTP可用性教程

Blackbox Exporter监控网站HTTP可用性教程

2026-10-01 18

一、监控目标

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。

Blackbox Exporter监控网站HTTP可用性教程

需要注意,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。

Blackbox Exporter监控网站HTTP可用性教程

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可用性看板。

Blackbox Exporter监控网站HTTP可用性教程

看板可以展示:

  • 网站探测是否成功。
  • 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

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章