一如既往,我又重复起了以前的作息。
我好像就是摆脱不了这个循环。有那么几天,我也试着改变过,早睡早起,硬撑着不睡,但过不了多久,还是会回到起点。
可能我还是得靠上学,才能把自己的生物钟掰回来。至少上学之后,早上总得起来,不至于每天睡到下午。
七八月这段时间,我的生活里多了一项工作:写探针。
这个探针算是有点独特。它融合了 GitHub 上 Uptime Kuma 的 SLA 和 Komari、Nezha 这类传统探针的 Agent。刚开始进展还算顺利,因为那个时候我只是打算自己用,能跑就行,也没想过要把它做得多适合别人。
后来我开始往开源的方向考虑。
但一旦想开源,很多东西就得重新想。自己会用是一回事,让别人也能用又是另一回事。我希望它尽量做成新手向,最好点几下就能完成,不要一上来就是一堆命令和配置。
于是我开始了大刀阔斧的改动。
尤其是 7 月 20 号到 30 号那几天,我基本每天都是从下午 3 点一直 Work 到早上 5 点。最多的一天,我发了 46 个 Push。
你问我为什么早上没有继续更新?
因为那个时候我已经睡着了。
当我觉得功能差不多的时候,又发现了另一个问题:Cloudflare 的免费额度开始撞瓶颈了。
D1、R2 的读写次数,Worker 的构建时间、CPU 时间,还有 Object 数量,这些东西一开始看着都还好,但真正算起来之后,问题就出来了。
我最开始的设计目标是支持 100 台 VPS,结果当时一检查,连 40 台都已经非常困难。
所以我又开始重构。
那时候 Agent 还是用 Go 写的。相比 C++ 和 Rust,Go 确实简单一些,写起来也快。但后来我又想要更好的内存管理和性能,希望它放在 1C64M 的 LXC 里也能顺利工作。
所以我最后把 Agent 换成了 Rust。
转换的过程挺艰难的,毕竟不是改几个文件名那么简单。不过换完之后,至少方向上是对的。我还专门加了低权限模式,理论上只要你有一台可以 SSH 登录的虚拟主机,就可以把这根“针”插进去。
后面我又增加了一键批量运行 IP 解锁和 NQ 脚本的功能。这方面我觉得 MJJ 应该会挺喜欢,毕竟不用一台一台进去执行命令了。
开发过程中,我也看了不少其他探针。
NodeSeek 的 NodeGet 给我的启发挺多,它的子 Agent Token、主题管理和整体思路,我都有参考。Komari 的前端数据刷新时间和 Ping 间隔,也让我对这些细节有了更多想法。
NeZha 的一些事情则让我意识到,大部分 MJJ 搞探针,其实就是为了展示机器状态,很少有人真的会去用探针后台里的内置 SSH。
所以我的探针从一开始就没有做 SSH 这类可以直接控制 VPS 的功能。这样就算探针后台被拿到了,也不至于直接拿到 VPS 的最高权限。
最多就是进去多跑几轮 NQ,把流量给耗掉一点吧 😂
CF-Server-Monitor 也是一个基于 Cloudflare 的云上探针,整体思路和我写的东西比较接近。
我刚开始看到它的时候,他们的 Agent 还是 Shell 的模式。这样确实可以在各种 Linux 上运行,但和 Go、C++、Rust 这些编译出来的二进制文件比起来,总归还是没那么体面。
现在看他们的最新版本,好像已经换成 Go 了。可能他们也发现 Shell 终究不是长久之计。
不过它们的额度控制,倒是给了我一个没想到的思路。
我一开始一直在死磕 HTTP,想办法压缩上报次数,或者把更多数据塞进一次请求里。但不管怎么改,Cloudflare 的额度还是用得很多。
后来我发现,他们用的是 WS 长连接。
这样确实可以大幅减少请求频率。于是我又开始琢磨,能不能把 HTTP 和 WS 结合起来,不要只靠一种方式。
就这样,又过了半个月。
现在基本属于佛系开发,进展很慢。前段时间我一股脑往前端叠了很多功能,项目里已经有不少屎山了。
到今天,8 月 22 日,它依旧没有发布。
你问它已经写好了吗?
那确实是写好了。
Agent、前端、后端、文档,全都写好了。甚至文档页都已经发布了,但项目的 GitHub 仓库还是 private 状态。
我也不知道自己到底还在等什么。
可能就是觉得它还不够好。功能虽然都有了,但总感觉还没有到可以直接公开出去的程度。
或许等到某个重要的日子,它就会变成 public 吧。
聶.NET
聶.NET
花有重开日,人无再少年
近期发布
1/1 · 0篇
1/1 · 0篇