不管你是自建代理 VPS 还是订阅了第三方机场,都遇到过这种头疼事:

“正在开会或者玩游戏,网络突然卡死!折腾半天才发现,原来是后台用的那个代理节点早在半小时前就被阻断或者宕机了!”
“手里有几十个自建节点,每次想知道哪个节点坏了,都要手动打开客户端一个个点‘延迟测试’,效率低下。”

在 2026 年,高手玩代理的核心原则是:永远不要用自己的肉眼去测试节点存活。

我们需要一套能够在后台 24 小时静默运行的自动化健康检查与告警机制。一旦某个节点发生延迟飙升、阻断或硬死,系统能在 5 秒钟内通过 Telegram、飞书或微信向你推送警告,并自动将流量切到备用节点!

本文用大白话带你搭建一套极简、免费且零成本的节点监控告警系统!


一、一句话搞懂:什么是代理健康检查?

我们先用一个形象的比喻看懂它的工作原理:

PLAINTEXT
普通人看节点:等打不开网页了,才手忙脚乱地去点“测试延迟”。
自动化健康探针:相当于聘请了一个 24 小时巡逻的保安,每隔 1 分钟去敲一下每个节点的门(发一个 HTTP/TCP 心跳请求)。
                一旦连续 3 次敲门没回应,保安立刻用手机发消息通知你:“香港 01 节点已宕机,已为你自动切到日本 02 节点!”

健康检查包含两个核心环节:

  1. 心跳探测(Probing):定期向目标节点发送 TCP 握手或 HTTP generate_204 请求。
  2. 通知告警(Notification):发现异常时,触发 Webhook 推送到你的手机通知端。

二、三种零成本监控告警方案对比

根据你的使用场景,可以选择最适合的方案:

方案名称 部署门槛 适合人群 核心优势
方案 1:Mihomo / Sing-box 内核自带健康检查 零门槛 (填配置文件) 普通个人用户 零代码,自动跳过坏节点,实现无感热备。
方案 2:Shell + Telegram 机器人脚本 极低 (复制粘贴) VPS 自建党 / 运维 纯轻量,几行代码就能在手机上收到推文报警。
方案 3:Cloudflare Workers 免费云端探针 低 (免费 Serverless) 多节点管理 / 团队 无需本地开机,全球 Anycast 节点代替你巡检。

三、实战一:Mihomo (Clash Meta) 内核自动剔除坏节点

最简单的防护,是在你的客户端配置中引入 url-test 或 fallback 自动故障转移机制:

YAML
proxy-groups:
  # 自动选择延迟最低且存活的节点
  - name: "⚡ 自动选优"
    type: url-test
    url: "http://www.gstatic.com/generate_204" # 健康检查地址
    interval: 300 # 每 300 秒检测一次
    tolerance: 50 # 延迟差小于 50ms 不频繁切换
    proxies:
      - "香港 01 节点"
      - "日本 01 节点"
      - "新加坡 01 节点"

  # 备用自动容灾(主节点挂了才切备用)
  - name: "🛡️ 故障转移"
    type: fallback
    url: "http://www.gstatic.com/generate_204"
    interval: 180
    proxies:
      - "主力 01 节点"
      - "备用 02 节点"

四、实战二:使用 Telegram 机器人实现秒级手机推送告警

如果你手头有几台 VPS 节点,想在节点宕机时让手机收到 Telegram 推送通知,只需在你的 Linux 主机或软路由上添加以下 Shell 探针脚本:

1. 极简探针脚本 (check_node.sh)

BASH
#!/bin/bash

# 配置你的 Telegram Bot Token 和 Chat ID
TG_BOT_TOKEN="123456789:ABCdefGHIjklMNOpqrsTUVwxyZ"
TG_CHAT_ID="987654321"

# 需要监控的代理 IP 或域名与端口
NODE_NAME="美国洛杉矶 01 节点"
NODE_HOST="104.238.120.45"
NODE_PORT="443"

# 使用 nc 或 curl 检查端口连通性
nc -z -w 5 $NODE_HOST $NODE_PORT
if [ $? -ne 0 ]; then
    # 端口不可达,触发 Telegram 报警消息
    MESSAGE="⚠️ <b>节点宕机告警</b>%0A%0A<b>节点名:</b>${NODE_NAME}%0A<b>主机:</b>${NODE_HOST}:${NODE_PORT}%0A<b>状态:</b>TCP 握手超时!请及时检查。"
    curl -s -X POST "https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage?chat_id=${TG_CHAT_ID}&text=${MESSAGE}&parse_mode=HTML" > /dev/null
fi

2. 设置定时任务 (Cron)

运行 crontab -e,添加以下命令使探针每 5 分钟自动巡检一次:

TEXT
*/5 * * * * /bin/bash /root/check_node.sh

五、常见报错与故障排查速查表

在配置探针和告警时,遇到问题请按下表自救:

现象 / 报错 大概率的原因 解决办法
Telegram 接收不到告警推送 1. TG_BOT_TOKEN 或 CHAT_ID 填错;
2. 运行脚本的主机无法直连 api.telegram.org。
1. 在浏览器里访问 https://api.telegram.org/bot<Token>/getUpdates 获取正确 ID;
2. 给 curl 添加代理参数 -x http://127.0.0.1:7890。
探针频繁发送“假警报” 检测间隔太短或网络偶尔发生正常抖动。 将心跳判定条件改为**“连续 3 次探测均失败”**再发送告警,避免偶发丢包引发骚扰。
Mihomo 频繁自动切换节点 tolerance 容忍差值设得太小(比如设成了 5ms)。 将 tolerance 设为 50 到 100,允许节点间有微小的正常延迟波动。

六、怎么验证你的告警系统配置成功?

  1. 手动触发网络中断:在测试 VPS 上临时运行 iptables -A INPUT -p tcp --dport 443 -j DROP 封锁端口。
  2. 观察手机通知:在 5 分钟内,你的 Telegram 或飞书是否成功弹出了包含节点名字和 IP 的红字报警消息。
  3. 恢复端口:运行 iptables -F 解锁端口,观察是否收到恢复正常的通知。

七、一句话总结

告别静默断网,探针帮你守门! 客户端开启 fallback 自动故障转移,VPS 上挂个 Telegram 告警脚本,从此节点宕机秒知道、流量无感秒切换!

关注 易邦科学上网,及时获取最近更新:

X : https://x.com/rozmiarek760575

版权声明

作者: 易邦

链接: https://blog.e8k.net/posts/node-health-check-alerting-2026/

许可证: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。