早先曾基于 Bandwagon Host (BWG) 的 API 逻辑,构建过一套 PHP 渲染的流量监控看板(见上篇博客)。虽然体验尚可,但 API 终究是“身外之物”——一旦换成 其他没有标准化 API 的厂商,监控便会瞬间哑火。真正的稳健不应寄托于第三方接口,而应植根于 Linux 系统底层。于是,便有了这篇关于基于 procfs 采样、支持动态账期重置与时间进度对标的流量审计方案。

核心逻辑:为什么它比传统脚本更专业?

在编写这套脚本时,坚持了几个原则:

  1. 数据源脱离 API:通过读取 /proc/net/dev 直接获取网卡原始字节流,无视任何服务商限制。
  2. 重启保护机制:利用 uptime 计算系统启动时间戳(Boot Time),判定系统是否重启,防止流量计数器清零导致“负流量”坏账。
  3. 进度对标:“流量消耗 % vs 时间进度 %”,不仅看用了多少,更看用得快不快。
  4. 持久化:使用 flock 文件锁,确保在高频触发下数据账本不会发生逻辑竞态(Race Condition)。

部署环境预检

在开始之前,确保你的 Debian 12 或其他主流 Linux 发行版已安装以下基础工具链:

# 检查并补全依赖
apt-get update && apt-get install -y curl awk grep flock

创建脚本并添加内容:
mkdir -p /root/505 && cd /root/505

在该目录下创建脚本vps_monitor.sh,脚本内容如下:
下载后修改13-19行内容

给脚本赋予权限并首次运行:

chmod +x /root/505/vps_monitor.sh && /root/505/vps_monitor.sh
/bin/bash /root/505/vps_monitor.sh --test
TZ='Asia/Shanghai' /bin/bash /root/505/vps_monitor.sh --report

写入任务 (日报 09:00 + 记账每 5 分钟) + 强制指定北京时间

(crontab -l 2>/dev/null | grep -v "vps_monitor.sh"; echo "0 9 * * * TZ='Asia/Shanghai' /bin/bash /root/505/vps_monitor.sh --report >/dev/null 2>&1"; echo "*/5 * * * * TZ='Asia/Shanghai' /bin/bash /root/505/vps_monitor.sh >/dev/null 2>&1") | crontab - && crontab -l

效果如下(仅为示例,实际部署可能略有偏差):

总结

相比于搬瓦工 API 的“黑盒数据”,这种通过 Linux 内核 proc 接口抓取的方案更加纯粹。
当你在日报中看到 流量 15.00% | 时间 14.50% 时,你会获得一种掌控感:
这不仅是在监控流量,更是在审计你的网络行为是否“合规”。
对于追求稳健性的人来说,这或许就是折腾 VPS 的乐趣所在。

💡 避坑指南
网卡名识别:不同 VPS 商网卡名不同(eth0, ens3, venet0 等),部署前请通过 ip addr 确认。
时区一致性:脚本强制 export TZ='Asia/Shanghai',确保重置点不会因为宿主机在美西或欧洲而导致数据错乱。

🤝 转载请注明出处,谢谢! 🤝