构建永恒在线的StatusPage:cf-vps-monitor 监控面板

前言

随着手头自建的节点和服务数量越来越多,传统的邮件提醒和人工巡检已无法满足管理需求,尤其是在校期间,难以即时响应服务异常。

搭建一个 Status Page 势在必行,但我排除了传统的 VPS 部署方案。原因很简单:我不希望陷入“监控服务的服务器本身也需要监控”的死循环。 为了避免单点故障,同时追求极致的免维护体验(无需关心续费、无需担心攻击),我选择了 Serverless 方案。

本教程基于开源项目 cf-vps-monitor,觉得不错的朋友可以去给作者点个 Star 🌟。接下来,我将介绍如何利用 Cloudflare Worker 搭建这个永不宕机的服务器探针。

项目效果预览:image

cf-vps-monitor部署

准备

  • Cloudflare 账户:且处于登录状态。
  • 一个域名(可选):最好已经托管在 Cloudflare 上,用于后续绑定访问。

创建D1数据库

我们需要创建一个数据库来存储服务器的状态信息。

  1. 登录 Cloudflare Dashboard
  2. 在左侧侧边栏找到并展开 存储和数据库 (Storage & Databases),点击 D1 SQL 数据库
  3. 点击 创建 按钮。
  4. 给数据库起一个简洁的名字(例如 cf-vps-monitor),然后点击 创建 完成。

数据库表结构构建

创建好数据库后,我们需要通过 SQL 指令构建表结构。

  1. 点击刚才创建好的数据库名称,进入详情页。
  2. 在顶部选项卡中点击 控制台 (Console)
  3. 直接复制 下方完整的 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 来承载监控面板的后端逻辑。

  1. 在左侧菜单栏选择 计算 (Compute) -> Workers 和 Pages
  2. 点击 创建应用程序,选择 从 Hello World 模板开始
  3. 给 Worker 起个名字(例如 vps-monitor),然后点击 部署
  4. 部署成功后,点击 编辑代码
  5. 删除编辑器内原有的所有代码,将 GitHub 项目中 worker.js 的全部代码复制并粘贴进去。
  6. 点击右上角的 部署 按钮保存更改。

为Worker绑定D1数据库

这是最关键的一步,必须将 Worker 与第一步创建的数据库连接起来,程序才能正常读写数据。

  1. 点击代码编辑器左上角的 Worker 名称(或直接返回 Worker 概览页),进入 设置 (Settings) 选项卡。
  2. 在二级菜单中选择 绑定 (Bindings)
  3. 点击 添加 -> 选择 D1 数据库
  4. 填写绑定信息(重要):
  • 变量名称:填写 DB (注意:必须大写,不能更改)。
  • D1 数据库:选择你在第一步创建的数据库(如 cf-vps-monitor)。
  1. 点击 部署 保存设置。
  2. 重要!初始化数据库: 复制你的Worker URL到浏览器,后面加上/api/init-db,如vps-monitor.abo-xxxxxxx.workers.dev/api/init-db,打开此链接后会看到 {"success":true,"message":"数据库初始化完成"} 即表明数据库已准备完毕。

设置定时任务

为了让探针能定期检测网站或服务状态,我们需要设置一个定时触发器。

  1. 在 Worker 管理页面,继续停留在 设置 选项卡。
  2. 选择 触发事件 (Triggers) 子菜单。
  3. 点击 添加 Cron 触发器
  4. 在配置中选择 计划,频率设置为 小时,输入框填写 1(代表每 1 小时触发一次检测)。
  5. 点击 添加 完成。

访问与验证

一切就绪!现在可以访问你的监控面板了。

  1. 返回 Worker 的 概览 页面。
  2. 找到 预览 区域的 URL(格式通常为 https://[你的worker名].[你的子域].workers.dev)。
  3. 点击链接访问,如果你看到了监控面板的前端界面,恭喜你,部署成功!🎉

cf-vps-monitor使用

首次登录与安全设置

打开面板首页,点击登录。系统会默认显示初始账号密码,比如以下信息登入:

  • 默认用户名: admin
  • 默认密码: monitor2025!

⚠️ 安全警告: 登录成功后,请务必第一时间在后台修改密码,防止被他人扫描爆破。

添加服务器监控

  1. 登录后台,点击 添加服务器
  2. 面板会自动生成一行一键安装脚本
  3. 通过 SSH 连接到你需要监控的 VPS,直接粘贴并执行该命令即可。
  • 脚本会自动安装 Agent 并与你的 Cloudflare Worker 建立连接,无需手动配置。

配置 Telegram 通知

为了在服务离线时第一时间收到警报,建议开启 Telegram 通知功能。

  1. 获取 Bot Token: 在 Telegram 中联系 @BotFather,创建一个新 Bot,获取形如 123456789:AbCdEfGhIjK...Token
  2. 获取 Chat ID: 联系 @userinfobot,它会返回你的数字 ID
  3. 保存配置: 回到面板设置页,分别填入上述两项信息。
  4. 测试验证: 启用通知开关,点击 保存 Telegram 设置。如果配置正确,你的 Telegram 应该会立即收到一条测试消息。

结语

至此,一个高可用、低延时且完全免费的服务器探针就部署完成了。

这次折腾也让我再次体会到了 Serverless 架构的魅力:将运维的复杂度交给云厂商,我们只需要关注代码和逻辑本身。利用 Cloudflare Worker + D1 数据库的组合,我们用极低的成本实现了传统 VPS 即使付费也难以达到的稳定性。

即使你是零基础的新手,我相信按照本文的步骤也能顺利搞定。希望能帮大家守住服务器的最后一道防线。👋

愿你的服务器永远 100% Online!🚀

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇