前言
传统服务器监控通常关注CPU、内存、磁盘和进程状态。只要这些指标没有异常,监控面板看起来就是正常的。但对用户来说,真正重要的并不是服务进程是否还在,而是网站能不能打开、接口能不能响应、网络链路是否可达。
有些故障并不会直接反映在主机指标中。例如DNS解析失败、端口被防火墙拦截、反向代理返回错误、证书异常,或者服务进程仍在运行却已经无法处理请求,都可能造成“内部正常、外部不可用”。
Blackbox Exporter提供了一种从外部主动检查服务的方式。它可以通过HTTP、TCP、ICMP和DNS等协议发起探测,并将探测是否成功、响应时间和状态等结果交给Prometheus采集。
本文会先在Ubuntu中安装Blackbox Exporter,将其配置为systemd服务,再设置HTTP与ICMP探测模块,并修改Prometheus的采集任务,对指定网站、接口和网络目标进行主动检查。
本地监控和告警运行正常后,还会使用 cpolar 将Prometheus的9090端口映射到公网,并配置固定二级子域名。这样运维人员在公司之外,也能查看探测结果和当前告警。

1.ubuntu安装Blackbox_Exporter监控数据
通过以下命令创建一个用于存放Blackbox_Exporter的目录 /app:
mkdir /app
进入到/app目录下:
cd /app

从prometheus官网下载压缩文件:https://prometheus.io/download/
下载适用于Linux系统的文件。

下载完成后记住下载路径。
手动上传到/app下载好的Blackbox_Exporter文件。

上传成功后解压:
tar -zxvf blackbox_exporter-0.27.0.linux-arm64.tar.gz

改名方便记忆:
mv blackbox_exporter-0.27.0.linux-arm64 blackbox_exporter

将Altermanager配置为系统服务:
cd /usr/lib/systemd/system
vim blackbox_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/app/alertmanager –config.file=/app/alertmanager.yml
[Install]
WantedBy=multi-user.target

加载system文件,启动alertmanager这个服务,并设置开机启动:
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%,立即告警,提前发现链路异常,防患于未然。
跟我一起操作吧~
以防万一怕操作错误,先把原来的配置文件先备份,之后配置配置文件:
mv blackbox.yml blackbox.yml
vi blackbox.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: 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服务:
systemctl restart blackbox_exporter.service

修改prometheus配置文件:
vi prometheus.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.5
for: 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步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
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页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

这样,我们就可以随时随地监控,不用担心,在家无法监控设备!
总结
传统服务器监控通常关注CPU、内存、磁盘和进程状态。只要这些指标没有异常,监控面板看起来就是正常的。但对用户来说,真正重要的并不是服务进程是否还在,而是网站能不能打开、接口能不能响应、网络链路是否可达。
有些故障并不会直接反映在主机指标中。例如DNS解析失败、端口被防火墙拦截、反向代理返回错误、证书异常,或者服务进程仍在运行却已经无法处理请求,都可能造成“内部正常、外部不可用”。
Blackbox Exporter提供了一种从外部主动检查服务的方式。它可以通过HTTP、TCP、ICMP和DNS等协议发起探测,并将探测是否成功、响应时间和状态等结果交给Prometheus采集。
本文会先在Ubuntu中安装Blackbox Exporter,将其配置为systemd服务,再设置HTTP与ICMP探测模块,并修改Prometheus的采集任务,对指定网站、接口和网络目标进行主动检查。
本地监控和告警运行正常后,还会使用 cpolar 将Prometheus的9090端口映射到公网,并配置固定二级子域名。这样运维人员在公司之外,也能查看探测结果和当前告警。


