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 服务
安装方式
git clone https://github.com/Chaizirancc/mysite-monitor-reporter.gitcd mysite-monitor-reportersudo ./install-ubuntu-reporter.shsudoedit /etc/mysite-monitor/reporter.env填好 MONITOR_ENDPOINT 和 MONITOR_INGEST_SECRET 两项,再 systemctl enable --now mysite-monitor.timer 就跑起来了。
现状
代码在,文档全,跑得起来。
但是没人在用。 真正要监控服务器,我后来用 UptimeRobot(免费)+ Cloudflare 自带的 Workers Analytics 凑合了——没那么”自制”,但够用。
这个 repo 留着权当个人作品集。哪天有人翻到 mysite 模板想配套部署了,再捡起来用不迟。