前言
随着手头自建的节点和服务数量越来越多,传统的邮件提醒和人工巡检已无法满足管理需求,尤其是在校期间,难以即时响应服务异常。
搭建一个 Status Page 势在必行,但我排除了传统的 VPS 部署方案。原因很简单:我不希望陷入“监控服务的服务器本身也需要监控”的死循环。 为了避免单点故障,同时追求极致的免维护体验(无需关心续费、无需担心攻击),我选择了 Serverless 方案。
本教程基于开源项目 cf-vps-monitor,觉得不错的朋友可以去给作者点个 Star 🌟。接下来,我将介绍如何利用 Cloudflare Worker 搭建这个永不宕机的服务器探针。
项目效果预览:
cf-vps-monitor部署
准备
- ✅ Cloudflare 账户:且处于登录状态。
- ✅ 一个域名(可选):最好已经托管在 Cloudflare 上,用于后续绑定访问。
创建D1数据库
我们需要创建一个数据库来存储服务器的状态信息。
- 登录 Cloudflare Dashboard。
- 在左侧侧边栏找到并展开
存储和数据库(Storage & Databases),点击D1 SQL 数据库。 - 点击 创建 按钮。
- 给数据库起一个简洁的名字(例如
cf-vps-monitor),然后点击 创建 完成。
数据库表结构构建
创建好数据库后,我们需要通过 SQL 指令构建表结构。
- 点击刚才创建好的数据库名称,进入详情页。
- 在顶部选项卡中点击 控制台 (Console)。
- 直接复制 下方完整的 SQL 代码块,将其粘贴到控制台的输入框中,并点击 执行 (Execute)。
SQL
/* 创建管理员账户表 */
CREATE TABLE IF NOT EXISTS admin_credentials (
username TEXT PRIMARY KEY,
password TEXT NOT NULL
);
/* 创建服务器信息表 */
CREATE TABLE IF NOT EXISTS servers (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
api_key TEXT NOT NULL UNIQUE,
created_at INTEGER NOT NULL,
sort_order INTEGER
);
/* 创建监控数据表 */
CREATE TABLE IF NOT EXISTS metrics (
server_id TEXT PRIMARY KEY,
timestamp INTEGER,
cpu TEXT,
memory TEXT,
disk TEXT,
network TEXT,
FOREIGN KEY(server_id) REFERENCES servers(id) ON DELETE CASCADE
);
🎉 提示: 当控制台显示执行成功(显示执行时间多少多少ms)提示时,说明数据库表结构已准备就绪!
创建和部署Worker
接下来,我们需要创建一个 Worker 来承载监控面板的后端逻辑。
- 在左侧菜单栏选择
计算 (Compute)->Workers 和 Pages。 - 点击 创建应用程序,选择 从 Hello World 模板开始。
- 给 Worker 起个名字(例如
vps-monitor),然后点击 部署。 - 部署成功后,点击 编辑代码。
- 删除编辑器内原有的所有代码,将 GitHub 项目中 worker.js 的全部代码复制并粘贴进去。
- 点击右上角的 部署 按钮保存更改。
为Worker绑定D1数据库
这是最关键的一步,必须将 Worker 与第一步创建的数据库连接起来,程序才能正常读写数据。
- 点击代码编辑器左上角的 Worker 名称(或直接返回 Worker 概览页),进入 设置 (Settings) 选项卡。
- 在二级菜单中选择 绑定 (Bindings)。
- 点击 添加 -> 选择 D1 数据库。
- 填写绑定信息(重要):
- 变量名称:填写
DB(注意:必须大写,不能更改)。 - D1 数据库:选择你在第一步创建的数据库(如
cf-vps-monitor)。
- 点击 部署 保存设置。
- 重要!初始化数据库: 复制你的Worker URL到浏览器,后面加上
/api/init-db,如vps-monitor.abo-xxxxxxx.workers.dev/api/init-db,打开此链接后会看到{"success":true,"message":"数据库初始化完成"}即表明数据库已准备完毕。
设置定时任务
为了让探针能定期检测网站或服务状态,我们需要设置一个定时触发器。
- 在 Worker 管理页面,继续停留在 设置 选项卡。
- 选择 触发事件 (Triggers) 子菜单。
- 点击 添加 Cron 触发器。
- 在配置中选择 计划,频率设置为 小时,输入框填写
1(代表每 1 小时触发一次检测)。 - 点击 添加 完成。
访问与验证
一切就绪!现在可以访问你的监控面板了。
- 返回 Worker 的 概览 页面。
- 找到 预览 区域的 URL(格式通常为
https://[你的worker名].[你的子域].workers.dev)。 - 点击链接访问,如果你看到了监控面板的前端界面,恭喜你,部署成功!🎉
cf-vps-monitor使用
首次登录与安全设置
打开面板首页,点击登录。系统会默认显示初始账号密码,比如以下信息登入:
- 默认用户名:
admin - 默认密码:
monitor2025!
⚠️ 安全警告: 登录成功后,请务必第一时间在后台修改密码,防止被他人扫描爆破。
添加服务器监控
- 登录后台,点击 添加服务器。
- 面板会自动生成一行一键安装脚本。
- 通过 SSH 连接到你需要监控的 VPS,直接粘贴并执行该命令即可。
- 脚本会自动安装 Agent 并与你的 Cloudflare Worker 建立连接,无需手动配置。
配置 Telegram 通知
为了在服务离线时第一时间收到警报,建议开启 Telegram 通知功能。
- 获取 Bot Token: 在 Telegram 中联系 @BotFather,创建一个新 Bot,获取形如
123456789:AbCdEfGhIjK...的Token。 - 获取 Chat ID: 联系 @userinfobot,它会返回你的数字
ID。 - 保存配置: 回到面板设置页,分别填入上述两项信息。
- 测试验证: 启用通知开关,点击 保存 Telegram 设置。如果配置正确,你的 Telegram 应该会立即收到一条测试消息。
结语
至此,一个高可用、低延时且完全免费的服务器探针就部署完成了。
这次折腾也让我再次体会到了 Serverless 架构的魅力:将运维的复杂度交给云厂商,我们只需要关注代码和逻辑本身。利用 Cloudflare Worker + D1 数据库的组合,我们用极低的成本实现了传统 VPS 即使付费也难以达到的稳定性。
即使你是零基础的新手,我相信按照本文的步骤也能顺利搞定。希望能帮大家守住服务器的最后一道防线。👋
愿你的服务器永远 100% Online!🚀






