- Maose2026-09-2213621
[!danger] 免责申明: 本项目由 AI 辅助完成. 使用本项目产生的一切后果由使用者自行承担,项目作者不对任何直接或间接损失负责.
本 Agent 仓库地址: https://github.com/MaoShiSanKe/monitor-agent-freebsd
探针官方文档: https://monitor-document.pages.dev/
探针官方 Github: https://github.com/monitor-probe/
由于本人只有 serv00 的 FreeBSD 系统, 所以对 Serv00 做了适配
Agent 概览:
- 协议层复用官方 Linux agent 的代码(MIT),采集层针对 FreeBSD 重写:全部走 sysctl / getfsstat / getifaddrs 内核接口,不读 /proc、不调外部命令
- 产出约 1.5MB 单二进制,内存占用约 20MB(含 rustls TLS 栈)
前置条件
要求 |
说明 |FreeBSD 12/13/14(amd64) |
实测环境为 14.3 |Rust 工具链 |
pkg install rust或 rustup;serv00 已系统级自带 rustc/cargo |git |
serv00 自带 |hub 端一个节点 |
面板 → 节点管理 → 添加节点,拿到该节点的 token(64 位十六进制串) |jail 用户的磁盘配额:源码 + 编译缓存约需 300MB~500MB。编译完可删
target/目录释放大半。第一步:编译```
git clone https://github.com/MaoShiSanKe/monitor-agent-freebsd.git
cd monitor-agent-freebsd
cargo build --release``
首次编译拉取依赖约 1-3 分钟。产物在target/release/monitor-agent-freebsd`。自检(可选但建议):```
cargo test --release应输出:test result: ok. 20 passed
``
第二步:安装到固定位置``
install -d ~/bin
cp target/release/monitor-agent-freebsd ~/bin/
~/bin/monitor-agent-freebsd --help```能打印用法即安装成功。
第三步:试运行```
~/bin/monitor-agent-freebsd --server https://你的面板域名 --token 你的节点token --interval 2``
成功标志:``
counting traffic on: bge0 bge1 ue0 ← 列出参与流量统计的网卡(你的机器上名字会不同)
connected to x.x.x.x:443 ← 连上 hub(经 Cloudflare 时显示 CF 的 IP)```此时刷新面板,节点应已点亮。Ctrl+C 停掉,进入下一步。
第四步:常驻运行
(无 root 方案)
jail 没有 systemd/OpenRC。用 FreeBSD 自带的
daemon(8)+ crontab 实现开机自启 + 崩溃自动拉起:```
crontab -e``
加入一行(注意 daemon 在 **/usr/sbin**):``
@reboot /usr/sbin/daemon -r /home/你的用户名/bin/monitor-agent-freebsd --server https://你的面板域名 --token 你的token --interval 2 >> /home/你的用户名/monitor-agent.log 2>&1``
再手动启动一次(不用等重启):``
/usr/sbin/daemon -r /home/你的用户名/bin/monitor-agent-freebsd --server https://你的面板域名 --token 你的token --interval 2 >> ~/monitor-agent.log 2>&1 &``
验证守护有效:kill掉 agent 进程,1 秒内ps aux | grep monitor-agent应出现新 PID(daemon -r` 的自动重启)。有 root 的完整 FreeBSD 机器
可以写 rc.d 脚本,或者同样用上面的 daemon + cron 方案。
运行参数
参数 |
默认 |
说明 |--server|
必填 |
hub 地址,https://或裸域名均可(自动升级 wss://) |--token|
必填 |
面板节点 token;经Authorization: Bearer头传输,不进 URL、不进反代日志 |--interval|
1 |
上报间隔秒数,范围 1-3600。jail 建议 2-5,降低宿主压力 |--iface|
全部非虚拟网卡 |
流量统计白名单,逗号分隔,如em0,vtnet0;-名字表示排除 |--insecure|
关 |
允许明文 ws:// 连远程 hub(token 明文传输,仅限无 TLS 内网) |也支持环境变量
MONITOR_SERVER/MONITOR_TOKEN/MONITOR_IFACE。jail 环境的数据口径
serv00 等 FreeBSD jail 共享宿主内核,指标口径如下——装前须知,免得误会数据造假:
指标 |
口径 |CPU 占用 / 负载 / 内存 |
整台宿主机(所有租户共享),与在 jail 里跑top看到的一致 |网络流量 |
默认整台宿主机的物理网卡总和;可用--iface指定 |磁盘 |
本 jail 可见的挂载(一般是分配给你的那块) |TCP/UDP 连接数 |
jail 可见子集(宿主连接表对 jail 关闭,读到多少算多少) |进程数 |
本 jail 自己的 |Swap |
通常为 0(jail 看不到 swap 设备) |这些是 FreeBSD jail 的固有行为,不是 agent 的 bug。
更新```
cd ~/monitor-agent-freebsd
git pull
cargo build --release
cp target/release/monitor-agent-freebsd ~/bin/
pkill -f monitor-agent-freebsd```
daemon -r会在 1 秒内用新二进制把进程拉起来,无感更新。agent 本身没有自动更新,需要手动执行。卸载```
pkill -f monitor-agent-freebsd
crontab -e # 删掉 @reboot 那行
rm ~/bin/monitor-agent-freebsd
rm -rf ~/monitor-agent-freebsd ~/monitor-agent.log```hub 面板上删除或隐藏该节点即可,无需其他清理。
常见问题
Q:编译报
error: linker 'cc' not foundA:缺基础工具链。serv00 自带;自己的机器
pkg install rust llvm即可。Q:面板显示在线但 CPU/内存数字巨大
A:正常——jail 共享宿主,显示的是整台机器(见上文口径表)。
Q:流量数字从安装那一刻起就几百 GB?
A:正常——上报的是内核的生命周期累计计数器(宿主机开机至今),hub 从此刻开始累计增量。面板上"日流量/月流量"从安装起算才是你自己的用量。
Q:hub 返回 401
A:token 错了。回面板节点列表重新复制完整 token(64 位十六进制)。
Q:
daemon: not foundA:用完整路径
/usr/sbin/daemon,FreeBSD base 系统自带,jail 一般不屏蔽。Q:掉线后多久面板变灰?
A:hub 侧判定约 150 秒。agent 掉线后会自动指数退避重连(1s→60s),hub 恢复后自动上线,无需人工干预。
与官方 Linux agent 的差异
- 仅采集层(collect.rs)是 FreeBSD 实现;协议层与官方代码同源,行为一致(心跳、重连退避、ping 探测、并发上限保护全部相同)
-
boot_id用kern.boottime+ 网卡集合摘要生成(FreeBSD 没有 Linux 的 boot_id 文件),重启后 hub 自动重新基线流量- 官方
install.sh一键脚本不适用于 FreeBSD(它依赖 systemd/OpenRC),本文的手动流程即 jail 等价物如果你部署在 Serv00 , 在部署全部完成后, 你的探针就会出现一台超级🐥 ^-^
主楼 - 夜轻2026-09-226775
^-^
- reboot-nodeseek2026-09-2253601
收到召唤@reboot 特此前来
- qq33002026-09-2256424
顶顶顶顶顶