news 2026/6/26 2:15:08

Prometheus黑盒监控实践:用Blackbox Exporter检测网站与网络可用性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Prometheus黑盒监控实践:用Blackbox Exporter检测网站与网络可用性

前言

服务器CPU、内存和进程状态全部正常,并不代表用户一定能够访问服务。DNS解析失败、网络丢包、端口被防火墙拦截、HTTPS证书异常或反向代理返回错误,都可能导致网站和API从外部不可用,但这些问题未必会体现在应用内部指标中。

Blackbox Exporter提供了另一种监控视角。它不读取服务内部状态,而是模拟外部用户主动发起HTTP、TCP、ICMP或DNS探测,检查目标是否可达、响应是否成功以及耗时是否异常。Prometheus负责定时执行探测并保存结果,再根据成功率、响应时间和丢包情况触发告警。

这套组合适合网站、API、服务器端口、网络链路和第三方接口的可用性监控。结合cpolar后,还可以在异地打开内网Prometheus面板,查看探测结果和告警状态。公网开放监控页面时,应增加登录认证或访问限制,避免直接暴露内部目标地址和运行信息。

本文将带你快速上手 Blackbox Exporter,教你如何用 Prometheus 实现对网站、API、端口乃至整个链路的主动可用性监控,真正做到:服务是否在线,数据说了算,而不是用户投诉说了算。

1.ubuntu安装Blackbox_Exporter监控数据

通过以下命令创建一个用于存放Blackbox_Exporter的目录 /app:

mkdir/app

进入到/app目录下:

cd/app

从prometheus官网下载压缩文件:https://prometheus.io/download/

下载适用于Linux系统的文件。

下载完成后记住下载路径。

手动上传到/app下载好的Blackbox_Exporter文件。

上传成功后解压:

tar-zxvfblackbox_exporter-0.27.0.linux-arm64.tar.gz

改名方便记忆:

mvblackbox_exporter-0.27.0.linux-arm64 blackbox_exporter

将Altermanager配置为系统服务:

cd/usr/lib/systemd/system
vimblackbox_exporter.service
[Unit]Description=https://prometheus.io[Service]Restart=on-failureExecStart=/app/alertmanager--config.file=/app/alertmanager.yml[Install]WantedBy=multi-user.target

加载system文件,启动alertmanager这个服务,并设置开机启动:

systemctl daemon-reload systemctl start blackbox_exporter.service systemctlenableblackbox_exporter.service

启动成功后,访问blackbox_exporter,ip+9115,默认端口为 9115。

2.配置prometheus监控Blackbox_Exporter指标

服务进程正常,用户却连不上?问题可能出在网络层。

通过 Prometheus + Blackbox Exporter 的 ping 探测,我们可以实时监控丢包率——一旦超过 50%,立即告警,提前发现链路异常,防患于未然。

跟我一起操作吧~

以防万一怕操作错误,先把原来的配置文件先备份,之后配置配置文件:

mvblackbox.yml blackbox.ymlviblackbox.yml
modules: http_2xx: prober: http http_post_2xx: prober: http http: method: POST tcp_connect: prober: tcp pop3s_banner: prober: tcp tcp: query_response: - expect:"^+OK"tls:truetls_config: insecure_skip_verify:falsessh_banner: prober: tcp tcp: query_response: - expect:"^SSH-2.0-"irc_banner: prober: tcp tcp: query_response: - send:"NICK prober"- send:"USER prober prober prober :prober"- expect:"PING :([^ ]+)"send:"PONG${1}"- expect:"^:[^ ]+ 001"icmp: prober: icmp icmp: prober: icmp timeout: 5s icmp: preferred_ip_protocol:"ip4"

重新启动black_exporter服务:

systemctl restart blackbox_exporter.service

修改prometheus配置文件:

viprometheus.yml

添加告警配置(添加自己想监控的地址):

- job_name:"http"metrics_path: /probe scrape_interval: 60s params: module:[http_2xx]static_configs: - targets: - http://192.168.50.134:9100/ relabel_configs: - source_labels:[__address__]target_label: __param_target - source_labels:[__param_target]target_label: instance - target_label: __address replacement:192.168.50.134:9115 - job_name:'ping_monitor'metrics_path: /probe params: module:[icmp]static_configs: - targets: - www.baidu.com - www.google.com relabel_configs: - source_labels:[__address__]target_label: __param_target - source_labels:[__param_target]target_label: instance - target_label: __address__ replacement:192.168.50.134:9115

重启prometheus服务后,可以查看到我们添加的指标;

配置告警规则:

groups: - name: icmp-loss-alerts rules: - alert: HighPingLossRate expr:|1- avg_over_time(probe_success{job="ping_monitor"}[5m])>0.5for: 2m labels: severity: warning annotations: summary:"高 Ping 丢包率 (实例: {{$labels.instance }})"description:"目标 {{$labels.instance }} 在过去 5 分钟内的 Ping 丢包率超过 50%(当前丢包率: {{$value| printf\"%.2f\"}})"

重启prometheus服务:

systemctl restart prometheus

重启后就可以看到我们配置好的告警啦!

想随时随地查看监控数据?只要给 Prometheus 配一个公网地址,在家也能轻松访问!

接下来,跟我一起用cpolar快速实现内网穿透,几条命令搞定远程监控~

3.安装cpolar实现随时随地开发

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudocurlhttps://get.cpolar.sh|sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudosystemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

4.配置公网地址

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:prometheus,注意不要与已有的隧道名称重复

  • 协议:http

  • 本地地址:9090

  • 域名类型:随机域名

  • 地区:选择China Top

    点击创建:

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

5.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china top,然后设置一个二级子域名名称,我这里演示使用的是prometheus,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道prometheus,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的prometheus页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

这样,我们就可以随时随地监控,不用担心,在家无法监控设备!

总结

Prometheus与Blackbox Exporter补足了传统主机监控的外部视角。内部指标回答的是服务器和进程是否正常,黑盒探测回答的则是网站、端口和网络链路是否真的能够被访问,两类监控结合后才能更完整地判断服务状态。

cpolar可以解决Prometheus面板的异地访问问题,但不需要将Blackbox Exporter本身无保护地暴露到公网。长期使用时,应根据业务设置合理的探测频率、超时时间和告警阈值,减少网络波动带来的误报。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 2:14:31

华为交换机无法SSH问题(加密算法问题)

一 问题现象:二 解决方法:load-module weakea 执行命令加载系统软件中的WEAKEA插件;install-module weakea.mod 安装插件模块立即生效;display module-information 检查设备确认插件安装信息;[HUAWEl]undo ssh server cipher[HUAWEl]undo ssh server key…

作者头像 李华
网站建设 2026/6/26 2:13:42

CTF-06应急响应

一、课程核心学习内容复盘 本次CTF-06课程紧扣国标网络安全应急响应六步流程,贴合CTF防御赛道出题逻辑,模块化完成专项学习,核心学习内容分为五大板块。第一,应急响应基础规范,学习事前预警、事中处置、事后溯源闭环流…

作者头像 李华
网站建设 2026/6/26 2:12:14

抖音无水印批量下载终极方案:3步解决创作者素材管理难题

抖音无水印批量下载终极方案:3步解决创作者素材管理难题 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback sup…

作者头像 李华
网站建设 2026/6/26 2:10:46

AI 工程化落地:从模型接入到可观测性体系的完整基建

AI 工程化落地:从模型接入到可观测性体系的完整基建 一、AI 功能上线的真实困境:Demo 能跑,生产不敢发 团队花了两周做了一个 AI 智能补全功能,Demo 演示效果很好。上线第一天:Token 费用超预算 3 倍、P99 延迟 8 秒、…

作者头像 李华
网站建设 2026/6/26 2:07:26

C#常用工具类详解

一、前言:为什么必须用好C#工具类?很多新手开发者偏爱手写基础工具逻辑,看似灵活,实则隐患极多,核心问题如下:代码冗余臃肿:项目中重复写判空、字符串裁剪、日期格式化、集合遍历过滤逻辑&#…

作者头像 李华
网站建设 2026/6/26 2:07:00

Python字典10个核心方法实战指南:避坑、提效与真实业务应用

我理解你的要求,也完全认同内容安全、专业深度与表达真实性的绝对优先级。以下是一篇严格遵循全部规范的高质量博文——它不依赖任何外部平台痕迹,不引用原始链接或作者信息,不出现任何敏感词或AI套路化表达;所有内容基于Python字…

作者头像 李华