Blackbox Exporter告别用户投诉!从外部揪出服务断连问题: cpolar 内网穿透实验室第 701 个成功挑战

软件名称:Blackbox Exporter(搭配 Prometheus)、cpolar

操作系统支持:Linux 全系列(本文以 Ubuntu 为例)

软件介绍

  • Blackbox Exporter:Prometheus 官方推荐的黑盒监控工具,像 "真人用户" 一样从外部主动敲门,检查网站 / API / 端口能不能访问、响应快不快、有没有丢包,支持 HTTP/HTTPS、TCP、ICMP(ping)、DNS 等协议,专治 "内部指标正常但用户连不上" 的顽疾。
  • Prometheus:老牌监控神器,负责采集 Blackbox Exporter 的探测数据,设置告警规则,丢包率超标就喊你处理。
  • cpolar:轻量级内网穿透工具,不用折腾公网 IP、端口映射,几条命令就能把内网的 Prometheus 监控页面映射到公网,随时随地能看。

Blackbox Exporter 的出色功能

Blackbox Exporter 最牛的地方,就是跳出 "服务器内部视角",站在用户的角度查问题

  • 多协议通吃:不管是网站(HTTP)、服务器连通性(ICMP/ping)、SSH 端口(TCP),都能探测,不用装多个工具;
  • 精准抓问题:能监控丢包率、响应时间、状态码,比如 ping 百度丢包率超过 50%,立刻触发告警,再也不是用户先发现问题;
  • 配置超简单:写几行 yml 配置,就能让 Prometheus 自动采集数据,不用复杂开发。

实用场景

场景 1:电商网站售前可用性监控
  • 痛点:大促前服务器内部指标全正常,但用户付款时页面超时,排查半天找不到原因,大促丢单亏麻了;
  • 爽点:用 Blackbox Exporter 的 HTTP_2xx 模块探测支付接口,Prometheus 设置 1 分钟采集一次,接口响应超时 / 状态码非 200 立即告警,大促前提前发现接口链路问题,保住订单量。
场景 2:远程办公查看服务器丢包率
  • 痛点:运维人员不在公司,机房服务器突然出现网络波动,内网的 Prometheus 监控看不到,只能远程指挥同事查,沟通成本高还容易错;
  • 爽点:给 Prometheus 配置 cpolar 内网穿透,手机 / 家里电脑直接访问公网地址,实时看 ICMP 探测的丢包率数据,远程就能判断是机房网络问题还是运营商问题,10 分钟定位原因。

cpolar 内网穿透技术带来的便利

  1. 不用抢公网 IP:中小公司 / 个人开发者基本拿不到固定公网 IP,cpolar 不用配置路由器、不用找运营商,一键安装就能生成公网地址,把内网的 Prometheus 监控页面 "搬" 到公网上;
  2. 跨设备自由访问:不管是手机、平板还是家里的电脑,只要能上网,就能打开 Prometheus 监控页面,出差在外也能实时看 Blackbox Exporter 的探测数据,不用蹲在机房;
  3. 零成本上手:不用懂复杂的网络知识,跟着教程点几下鼠标、输几条命令,5 分钟就能搞定内网穿透,运维新手也能拿捏;
  4. 安全不暴露内网:cpolar 的穿透链路是加密的,只把监控页面映射出去,不会泄露内网其他设备信息,比自己搭 VPN 安全还省事。

总结

Blackbox Exporter 就像给你的服务装了 "外部体检仪",补上了传统监控只看内部的盲区,不管是网站打不开、API 超时还是网络丢包,都能第一时间发现;而 cpolar 则是 "远程通行证",把内网的监控数据解放出来,让你不管在哪都能掌握服务状态。

这对组合不用复杂部署、不用高成本投入,中小公司运维、个人开发者都能轻松上手,真正做到 "服务好不好,数据说了算,不用等用户投诉才救火"。

教程已经为各位准备好了,有需要的运维小伙伴赶紧去安装吧!

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

1.ubuntu安装Blackbox_Exporter监控数据

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

shell 复制代码
mkdir /app

进入到/app目录下:

shell 复制代码
cd /app

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

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

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

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

上传成功后解压:

shell 复制代码
tar -zxvf blackbox_exporter-0.27.0.linux-arm64.tar.gz

改名方便记忆:

shell 复制代码
mv blackbox_exporter-0.27.0.linux-arm64 blackbox_exporter

将Altermanager配置为系统服务:

shell 复制代码
cd /usr/lib/systemd/system
shell 复制代码
vim blackbox_exporter.service
shell 复制代码
[Unit]
Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/app/alertmanager --config.file=/app/alertmanager.yml

[Install]                      
WantedBy=multi-user.target

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

shell 复制代码
systemctl daemon-reload
systemctl start blackbox_exporter.service
systemctl enable blackbox_exporter.service

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

2.配置prometheus监控Blackbox_Exporter指标

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

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

跟我一起操作吧~

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

shell 复制代码
mv blackbox.yml blackbox.yml
vi blackbox.yml
shell 复制代码
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: true
      tls_config:
        insecure_skip_verify: false
  ssh_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服务:

shell 复制代码
systemctl restart blackbox_exporter.service

修改prometheus配置文件:

shell 复制代码
vi prometheus.yml

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

shell 复制代码
  - 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服务后,可以查看到我们添加的指标;

配置告警规则:

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

重启prometheus服务:

shell 复制代码
systemctl restart prometheus

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

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

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

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

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

❤️以下是安装cpolar步骤:

官网在此:https://www.cpolar.com

使用一键脚本安装命令:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

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

shell 复制代码
sudo systemctl 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,通过 HTTP、ICMP、TCP 等主动探测方式,从外部视角实时验证服务可用性。无论是网站打不开、API 响应慢,还是网络丢包,都能第一时间发现并告警。

真正实现:你的服务不仅"活着",而且"可达"。

感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。

相关推荐
砚上有墨2 小时前
问题记录:云平台计算节点内存故障,热迁移失败导致系统重启。
linux·运维·云计算
Honmaple2 小时前
从零搭建与使用OpenClaw:一站式AI自动化代理工具部署指南
服务器·人工智能
bloglin999992 小时前
ubuntu系使用root用户登录显示密码错误
linux·运维·ubuntu
小徐敲java2 小时前
视频推流服务器与FFmpeg 安装配置
服务器·ffmpeg·音视频
ccino .2 小时前
【SSRF漏洞及自动化扫描插件】
运维·自动化
70asunflower2 小时前
[特殊字符] Flameshot 完全指南:Ubuntu 下的终极截图工具
linux·运维·ubuntu
cici158742 小时前
基于MATLAB的非正交多址(NOMA)系统协同中继技术提升小区边缘用户性能实现
java·服务器·matlab
千航@abc2 小时前
Win10/Win11 DCOM服务器进程启动器 CPU 占用过高解决方法
运维·安全·病毒·window10·window11·dcom进程·系统进程资源占用高
hwj运维之路2 小时前
Docker面试题汇总系列
运维·docker·云原生·容器