一个基于 Cloudflare Workers + D1 + Durable Objects 的多服务器监控探针系统,支持实时监控、历史数据查看、延迟追踪、地图展示等功能。兼容主流Linux系统,Alpine Linux,OpenWrt,Windows系统。
Important
🚨 紧急安全/性能更新 (v2.7.8)
本次版本修复了 月度任务导致数据表索引丢失 的严重 Bug。该问题影响 v2.7.0 ~ v2.7.7 所有版本。
⚠️ 潜在影响:此 Bug 会严重增加 D1 读行消耗,可能导致免费额度超限,造成服务不可用。
👉 请所有用户务必立即升级!
项目地址:CF-Server-Monitor
演示地址:演示 | 跨域纯前端多站点版本
TG群:https://t.me/cfServerMonitor
功能:
- 实时监控:CPU、GPU、内存、磁盘、网络、进程数、连接数、负载均衡、Ping、丢包率、月流量,剩余时间等信息
- 历史图表:支持7天历史数据查看
- 全球地图:可视化展示服务器分布
- 离线和到期告警:支持 Telegram 和企业微信通知
- 免费部署:免费托管在Cloudflare平台
- 安全增加:单向上报,无惧风险。可配置CF盾,关闭访客访问
- 额度查询:后台可查询 Cloudflare D1 与 Workers 额度使用量
- 自定义CSS/JS:后台可用自定义CSS/JS背景图,增强一定的可玩性
安全声明
本探针没有webssh,命令下发功能,没有自动更新脚本功能,服务器只是单向上报数据,Cloudlfare端完全没有一点权限控制主机,唯一的安全性就是扎针的时候下载的 install.sh,这个是通过GitHub链接,自动部署到Cloudflare,只要保证GitHub和Cloudflare安全,就完全没问题。而且就算GitHub和CF账号被黑了(应该不存在吧),只要不去服务器端更新脚本,也完全没问题。项目还有安全增强,可用在后台配置CF盾,JWT密钥,或者干脆设置不对外访问,进一步加强。










日间模式

自定义css风格

当前版本:V2.7.6
<2.7.1 需要升级安装脚本 才能生效,否则新增的丢包率无法获取
# Linux
curl -sL https://你的项目.你的子域.workers.dev/install.sh | bash -s install
# Alpine
curl -sL https://你的项目.你的子域.workers.dev/install-alpine.sh | sh -s install
# OpenWrt
curl -sL https://你的项目.你的子域.workers.dev/install-openwrt.sh | sh -s install
<= 2.6.9 版本,使用方式一部署方式,需要在Workers & Pages页面,点击 Settings,修改Build configuration的Deploy command为:npx wrangler deploy --keep-vars,否则会导致API_SECRET丢失。旧key可用通过
# Linux
cat /etc/systemd/system/cf-probe.service
# OpenWrt,Alpine
cat /etc/init.d/cf-probe
# >2.6.9版本
cat /etc/config/cf-probe/config.conf
获取,再重新设置环境变量API_SECRET(注意是设置顶部的变量和密钥),最后再同步数据。
- V2.7.7 添加GitHub Page部署支持,添加飞书,Bark通知支持
- V2.7.6 添加多站点支持包括验证码登录等,添加Windows PowerShell无依赖安装脚本,一些安全优化
- V2.7.5 DO WebSocket改成 DO WebSocket Hibernation基本剔除DO Duration消耗,新增批量推送入口,每5秒批量接收多个服务器更新,减少 DO 请求次数。
- V2.7.4 添加允许跨域配置,为后续版本额外功能做铺垫,前端加上跨域配置,修改成HASH模式,修改country为region,数据库自动维护
- V2.7.3.1 当request.cf返回
cf object not available错误,导致国家/地区代码获取失败,使用request.headers获取作为备选 - V2.7.3 新增服务器到期提醒功能,调整后台设置页面布局
- V2.7.2 新增支持多分区磁盘统计功能以及其他优化,增加图文教程
- V2.7.1 新增国内四线路丢包率监控与历史图表,新增GPU字段与图表展示(GPU暂未测试),后台新增 Cloudflare D1/Workers 每日额度查询功能;
- V2.7.0 将每日数据清理改为每月1号执行的表轮换任务, 删除旧表将不再扣除D1消耗,前端图表支持查看最长7天的历史数据,优化脚本一键升级功能
- V2.6.10 修复了方式一部署方式,同步后丢失API_SECRET的问题
- V2.6.9 修复地图显示问题,重构OpenWrt安装脚本,新增OpenRC服务支持
- V2.6.8 修复网卡统计误统计非目标网卡流量的问题,修复Alpine环境UDP连接数统计错误,本次更新需要重新安装脚本才能生效
- V2.6.7 增加了月流量统计校正功能,以及首页流量统计展示
- V2.6.6 增加上报间隔,Ping方式,流量重置日入库功能
- V2.6.5 修复了部分系统启动时间获取错误的问题,TCP/UDP上报格式错误导致失败问题,新增详情页面实时网速展示
- V2.6.4 增加了 月流量统计 功能,升级后请在后台手动点击 升级数据库 来更新数据库结构。不然会导致数据库结构错误,影响正常运行。同时需要在后台设置重置日期,并重新安装脚本。
- V2.6.3 应大家需求,增加自定义Ping设置
- V2.6.0 降低了 50% 的D1写入消耗,强烈建议升级,升级后请在后台手动点击 升级数据库 或者 重建数据库 。
- V2.5.0 增加客户端上报数据后,在不占用D1消耗的情况下,前端WebSocket实时刷新数据
- V2.4.0 版本主要优化了D1读写占用,使项目消耗大大降低,以及增加了防护避免被刷。
Q: 部署后返回API_SECRET is required
如果是升级后丢失API_SECRET,请在Workers & Pages页面,点击 Settings,修改Build configuration的Deploy command为:npx wrangler deploy –keep-vars,重新设置API_SECRET,下次部署会继续保留。旧key可用通过cat /etc/systemd/system/cf-probe.service或者cat /etc/init.d/cf-probe或者cat /etc/config/cf-probe/config.conf获取。
如果是第一次GitHub Action 自动部署,确保在 GitHub Secrets 中设置了 API_SECRET 密钥。
如果是第一次一键部署,确保在Cloudflare Workers & Pages 中设置了 API_SECRET 密钥。
Q: D1 数据库免费额度够用吗?
Cloudflare D1 免费版提供 5GB 存储和 5M 读取行/日、100K 写入行/日,足以支持服务器监控。
写入行:1台服务器一天占用写入行是2.88k,免费写入额度是100k/天,理论上可用支持34台服务器的监控,如果修改上报频率为120秒可用翻倍。
读取行:1台服务器一天占用读行是8k左右,如果开启站点兼容,大概是1.6k,免费读行是5M/天,非常充裕 主要是前端访问消耗的次数,限制了非登录用户1小时以上的查看,只要不被暴力刷额度,绝对够用,如果不放心,可用在后台开启Turnstile人机验证,或者也可以选择仅登录查看
Q: D1 数据库免费额度超出扣费吗?
超出不扣费,只会限制访问,第二天北京时间08:00重置
Q: 忘记密码?
进入Cloudflare后台,进入D1数据库(server-monitor-db),点击右上角explore data,进入后点击左侧的setting表,双击site_options右侧的value,可以看到用户名和md5加密的密码,password修改成e10adc3949ba59abbe56e057f20f883e,即默认密码123456,右上角点Commit 1 change,弹出的确认框点确认即可。然后访问后台用默认密码登录即可。
✘ [ERROR] Some triggers failed to deploy for cf-server-monitor:
这是你的账户Cron定时任务总数超了,每个账户免费额度是5个,本项目需要两个定时任务,一个是定时监控,每分钟一次,另一个是每小时一次(每月1号数据轮换、每月8号清理旧表、每天12:00服务器到期检测)。不需要定时监控在线的话,可以修改wrangler.toml的crons = ["*/1 * * * *", "0 * * * *"]为crons = [""0 * * * *"]保存后自动触发不出。每小时一次的任务不能删除,不然会导致数据表无限增大。
