728 字
4 分钟
mysite-monitor-reporter:一段创作欲爆棚期的产物

mysite-monitor-reporter#

仓库:Chaizirancc/mysite-monitor-reporter 配套:Chaizirancc/mysite

为什么要做这个#

那会儿我自己写过一个网站(不是用模板,纯粹手搓的 Astro 项目),然后在里面加了一个”监控”栏目——想着能显示服务器状态、CPU 内存磁盘这些。

栏目摆在那里,里面的数据总得实装吧。

创作欲爆棚期#

实话说,做这个的时候我处于一个创作欲爆棚的时期。看 systemd 文档、想 HMAC 验证模型、想”只出站不开端口”的安全原则、想 Ubuntu 定时器怎么和网站管理界面配合——这些东西单独看都很有意思,我就照着自己的脑补一路搓了下来。

结果就是搓了一个构思产物。架构完整、文档完善、代码可读,但是:

这玩意的用处微乎其微。

为什么?因为我那个自建网站后来没怎么用——服务器也是临时的(教育优惠的免费额度),到期就没续费了。配套的 mysite 模板倒是沉淀下来了,但 mysite 模板本身用的人也不多(我自己的一个 fork 而已)。

于是这个 reporter 现在就躺在 GitHub 上,没有真实生产环境在跑。

它仍然解决过的设计问题#

虽然没啥真实用户,但设计时的几个约束我觉得还算有价值,列出来给以后想自己写监控的人参考:

1. 监控本身不应成为攻击面#

不开放入站端口
↓
只主动 HTTPS POST 到 Worker
↓
任何想监控服务器的人,扫不到这个端口

服务器没有 80/443 以外的端口开。攻击者就算知道是这台机器,也没入口打进来。

2. 身份验证不能靠 IP / Token 明文#

本地密钥
↓
HMAC 签名
↓
Worker 端验签

MONITOR_INGEST_SECRET 在 reporter 本地,权限 600,不入库。Worker 端只验签名,不查密钥。

3. 间隔由网站端控制,不是硬编码#

网站管理界面设置:1 / 2 / 5 / 10 / 15 / 30 / 60 分钟
↓
reporter 每分钟拉一次签名配置
↓
到期才采集完整指标

这样不需要 SSH 上服务器改 crontab——直接在网站后台调。

采集内容#

  • CPU 使用率 + 负载
  • 内存
  • 磁盘空间
  • 运行时间
  • OpenList systemd + 健康检查
  • 最多 12 个自定义 systemd 服务

安装方式#

Terminal window
git clone https://github.com/Chaizirancc/mysite-monitor-reporter.git
cd mysite-monitor-reporter
sudo ./install-ubuntu-reporter.sh
sudoedit /etc/mysite-monitor/reporter.env

填好 MONITOR_ENDPOINT 和 MONITOR_INGEST_SECRET 两项,再 systemctl enable --now mysite-monitor.timer 就跑起来了。

现状#

代码在,文档全,跑得起来。

但是没人在用。 真正要监控服务器,我后来用 UptimeRobot(免费)+ Cloudflare 自带的 Workers Analytics 凑合了——没那么”自制”,但够用。

这个 repo 留着权当个人作品集。哪天有人翻到 mysite 模板想配套部署了,再捡起来用不迟。

mysite-monitor-reporter:一段创作欲爆棚期的产物
https://fuwari.vercel.app/posts/mysite-monitor-reporter/
作者
柴子冉
发布于
2026-08-27
许可协议
CC BY-NC-SA 4.0