CF-Server-Monitor 基于 Cloudflare Workers、D1 和 Durable Objects 的免费、轻量级多服务器监控探针系统
根据 CF-Server-Monitor 的官方仓库,这是一个基于 Cloudflare Workers、D1 和 Durable Objects 的免费、轻量级多服务器监控探针系统。以下是基于其文档整理的完整部署与使用教程。
🧭 核心特点与架构
CF-Server-Monitor 与传统的“主控-被控”式监控系统(如 ServerStatus)不同,其核心优势在于免费托管、单向上报和高安全性。
核心架构:
- 服务端(面板):部署在 Cloudflare Workers 上,使用 D1 数据库 存储历史数据,并通过 Durable Objects + WebSocket 实现实时数据推送。
- 客户端(Agent):安装在被监控的服务器上(支持 Linux、Windows、macOS、OpenWrt 等)。Agent 只单向上报 CPU、内存、磁盘、网络流量等指标,不提供 WebSSH、远程命令下发等控制功能,降低了安全风险。
- 前端:一个 Vue 3 构建的响应式仪表盘,支持实时数据、历史图表、地图视图和移动端适配。
对比传统探针:
- 成本:充分利用 Cloudflare 免费额度(Workers 每天 10 万次请求,D1 数据库免费额度)。
- 安全:单向数据上报,没有主动控制通道,Agent 可非 root 运行。
- 维护:无需自己维护服务器和数据库,主要维护 Worker 脚本即可。
📦 部署步骤
部署主要分为服务端(Cloudflare)和客户端(被监控服务器)两部分。
1. 前置准备
- 一个 Cloudflare 账户。
- 一个 GitHub 账户(推荐用于自动部署)。
- 生成一个足够复杂的
API_SECRET(强密码),它将作为 Agent 上报的密钥和首次登录后台的密码。
2. 部署服务端(推荐方式:GitHub Actions)
这是最方便、也便于后续更新的方式。
- Fork 仓库:将本项目 Fork 到你的 GitHub 账户。
- 创建 Cloudflare D1 数据库:
- 进入 Cloudflare Dashboard,进入“Workers & Pages” -> “D1”。
- 创建一个新的 D1 数据库,名称建议为
server-monitor-db。
- 配置 GitHub Secrets:在你 Fork 的仓库中,进入
Settings->Secrets and variables->Actions,添加以下 Secrets:CF_API_TOKEN:你的 Cloudflare API Token(需具备 Workers 和 D1 编辑权限)。CF_ACCOUNT_ID:你的 Cloudflare 账户 ID。D1_DATABASE_ID:你刚才创建的 D1 数据库 ID。API_SECRET:你设置的强密码。
- 触发部署:将代码推送到
main分支,或手动在 Actions 页面运行Deploy to Cloudflare Workers工作流。首次部署会自动完成数据库初始化。
其他部署方式:
- Cloudflare Workers 连接 GitHub:在 Cloudflare 面板中选择从 GitHub 仓库导入并自动构建。
- 一键部署:使用
Deploy with Workers按钮快速体验,但不易后续更新。
3. 首次登录与配置
- 部署成功后,访问你的 Worker 域名(如
https://你的项目名.workers.dev)。 - 点击右上角“管理后台”,或直接访问
/admin#/admin。 - 默认用户名
admin,密码为你在API_SECRET中设置的值。登录后请立即修改后台密码。 - 在管理后台的“全局设置”中,你可以配置站点标题、背景图、通知渠道(Telegram、企业微信等)、监控阈值等。
4. 添加被监控服务器
- 在管理后台中,点击“添加服务器”,填写一个名称。
- 添加后,点击服务器列表右侧的“复制安装命令”按钮。
- 选择目标服务器的系统和 Agent 版本(默认推荐 Go 版本)。
- 在目标服务器上以 root 或具有 sudo 权限的用户执行该命令。
- 安全建议:对于支持
systemd --user的 Linux,建议使用非 root 用户安装,命令会有所不同。可参考文档中的“非 root 安装”部分。
- 安全建议:对于支持
- 等待约一分钟,Agent 开始上报数据,前台即可看到新服务器的监控信息。
⚙️ 核心功能与配置
1. 监控与展示
- 实时仪表盘:显示所有服务器的在线状态、CPU、内存、磁盘、网络流量等。
- 服务器详情页:查看 7 天历史图表、实时网速、月流量统计、网络质量(延迟/丢包)。
- 多视图:支持卡片、列表、地图等多种展示方式。
2. 通知与告警
在管理后台的“通知设置”中,你可以配置:
- 渠道:支持 Telegram、企业微信、飞书、钉钉、Bark、Server酱、自定义 Webhook 等多种渠道。
- 告警类型:
- 离线告警:服务器离线达到设定阈值后通知,恢复时发送恢复通知。
- 资源负载告警:CPU、内存、磁盘使用率或上下行速率超过阈值时告警。
- 到期提醒:服务器到期前 1-7 天每日提醒。
3. Agent 参数(高级)
Agent 安装命令中已包含基本参数。常用可调参数包括:
-interval:上报间隔(秒),默认 60。增加间隔可降低 Worker 用量。-reset_day:月流量重置日期,默认 1 号。-ct/-cu/-cm:自定义电信/联通/移动的 Ping 检测节点。
4. 安全与权限
- API_SECRET:Worker 环境变量,用于 Agent 上报验证。
- 后台 JWT:管理员登录后签发,用于后续管理请求和 WebSocket 实时连接认证。
- CORS 与 CSP:可配置允许跨域访问的来源和内容安全策略白名单。
- Turnstile:可为公开页面启用 Cloudflare Turnstile 人机验证。
🔧 升级与维护
升级 Worker:如果通过 Fork 部署,同步上游仓库(
Sync fork)即可触发 Actions 重新部署。升级 Agent:在目标服务器上直接重新执行新的安装命令即可完成升级,旧配置会被保留。
1
2# Linux / macOS 通用升级命令
curl -fsSL https://raw.githubusercontent.com/huilang-me/cfsm-agent/main/install.sh | sh -s -- install卸载 Agent:执行相同的安装脚本,但参数改为
uninstall。数据库维护:后台提供“数据库管理”功能,可执行升级表结构或清空历史数据。
❓ 常见问题与排查
- 部署后返回
API_SECRET is required:说明 Worker 未读取到环境变量。需在 Cloudflare Dashboard 的 Worker 设置中,重新添加API_SECRET变量并保存,触发重新部署。 - Agent 没有上报数据:先确认服务器能访问 Worker URL。可临时在 Agent 安装命令后追加
-debug=1开启调试日志,检查后再移除。 - 忘记后台密码:直接进入 Cloudflare D1 数据库的
setting表,将password字段修改为旧版 MD5 兼容值e10adc3949ba59abbe56e057f20f883e(对应密码123456),再用此密码登录后台重设。 - 国内服务器无法上报:建议绑定自定义域名到 Worker。如无法绑定,可尝试通过修改
/etc/hosts指向可用的 Cloudflare CDN IP。
总结
CF-Server-Monitor 是一个利用 Cloudflare 生态构建的零成本、高安全性监控解决方案。部署的核心是通过 GitHub Actions 或 Cloudflare 面板将服务端部署到 Workers,然后在各服务器上执行自动生成的安装命令。日常使用中,你可以通过其直观的仪表盘进行监控,并配置多渠道告警。项目对 Cloudflare 免费额度友好,适合个人开发者、小型团队或需要轻量级监控的场景。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 极客的赛博空间 | 专注 AI 与技术分享!
评论







