在管理后台:设置
面板监视器
使用 Cloudflare Worker 每分钟检查一次面板,并在面板停止响应和恢复时发送 Telegram 告警。
面板监视器是一个小型 Cloudflare Worker,每分钟探测一次面板的公共监听器。连续失败 3 次后,它会发送一条 Telegram 消息;面板恢复响应后,它会发送一条恢复消息并说明停机时长。
如果缺少任一 Telegram 密钥,Worker 不会执行任何操作。
任何低于 500 的 HTTP 状态都视为正常,包括面板的伪装 404 页面。超时、连接错误、TLS 错误或任何 5xx 响应都视为失败。Worker 不会代理流量、修改 DNS 或在面板的域名上添加路由。它自己的公共 fetch 处理程序返回 404,并且已禁用 workers_dev。
用量和成本#
定时任务每分钟运行一次:每天检查 1,440 次,每次向面板发送一个请求并读取一次 KV。只有失败次数或停机 / 恢复状态发生变化时才会写入 KV;检查正常或告警阈值触发后持续停机时都不会写入 KV。
设置#
在 deploy/cloudflare-watcher 中:
-
复制示例配置并创建 KV 命名空间:
cp wrangler.toml.example wrangler.toml wrangler kv namespace create WATCH -
将 Wrangler 返回的命名空间 ID 填入
wrangler.toml的[[kv_namespaces]]。 -
将
HEALTH_URL设为面板的公共监听器,例如https://panel.example.com/。面板的伪装页面即可;不要将 Worker 指向私有监听器。 -
可以在
[vars]中设置HEALTH_TIMEOUT_MS(默认值为8000)、ALERT_AFTER(连续失败次数,默认值为3)、ALERT_NAME(默认值为Mistgate panel)和ALERT_LANG(en或ru,默认值为en)。 -
添加 Telegram 机器人令牌作为密钥:
wrangler secret put TELEGRAM_BOT_TOKEN使用与面板 Telegram 告警相同的机器人。向 BotFather 获取其令牌;面板不会再次显示该令牌。
-
从自己的已关联卡片上的 集成 → Telegram 告警 获取聊天 ID:
wrangler secret put TELEGRAM_CHAT_ID -
安装软件包依赖并部署:
pnpm install wrangler deploy
Worker 只会调用 Telegram 的 sendMessage 方法。它不会轮询机器人或配置 webhook,因此面板可以继续轮询聊天关联消息。
测试告警#
临时将 HEALTH_URL 指向面板公共主机上的一个关闭端口并保持 3 分钟,或停止面板。连续 3 次定时检查失败后,Worker 应发送停机告警。恢复该 URL 或重新启动面板;下一次正常检查应发送恢复消息。测试后恢复原来的 HEALTH_URL。