服务器流量统计脚本,每日生成流量报表:服务器流量统计脚本

服务器流量超标可能导致额外费用或服务中断,尤其使用按流量计费的云服务器时,每日掌握进出流量非常必要。
本文面向零基础用户,通过 vnStat 这款轻量工具,手把手教你搭建一个每天自动生成流量报表的脚本。
完成后,你每天都能在指定目录看到前一天的流量统计,无需手动查询。

安装 vnStat 与初始化数据库

vnStat 是 Linux 下常用的流量统计工具,它从网卡读取数据,不抓包,对系统性能影响极小。

Debian/Ubuntu 系统:

sudo apt update
sudo apt install vnstat -y

CentOS/RHEL 系统:

sudo yum install epel-release -y
sudo yum install vnstat -y

安装后启动服务并设置开机自启:

sudo systemctl start vnstat
sudo systemctl enable vnstat

确认 vnStat 已识别你的网卡(通常为 eth0 或 ens33):

vnstat --iflist

如果输出中列出多个网卡,记下你实际使用的网卡名,后续脚本需要指定。

编写每日流量报表脚本

创建一个脚本文件,例如 /usr/local/bin/daily_traffic_report.sh,内容如下:

#!/bin/bash

# 指定网卡名称,根据实际情况修改
INTERFACE="eth0"
# 报表保存目录
REPORT_DIR="/var/log/traffic_reports"
mkdir -p "$REPORT_DIR"

# 获取昨天的日期,格式如 2025-01-30
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

# 生成流量摘要并写入文件
{
echo "=== 服务器流量日报 $YESTERDAY ==="
echo ""
echo "网卡: $INTERFACE"
echo ""
vnstat -i "$INTERFACE" -d | grep "$YESTERDAY"
echo ""
echo "--- 月度累计 ---"
vnstat -i "$INTERFACE" -m
echo ""
echo "--- 实时速率 ---"
vnstat -i "$INTERFACE" -tr
} > "$REPORT_DIR/traffic_$YESTERDAY.txt"

echo "报表已生成: $REPORT_DIR/traffic_$YESTERDAY.txt"

保存后赋予执行权限:

sudo chmod +x /usr/local/bin/daily_traffic_report.sh

先手动运行一次,确认能正常输出:

sudo /usr/local/bin/daily_traffic_report.sh

检查 /var/log/traffic_reports/ 目录下是否生成了文件,并查看内容是否包含昨日流量数据。

设置定时任务每天自动执行

使用 cron 让脚本每天凌晨执行。
编辑当前用户的定时任务:

crontab -e

添加下面一行,表示每天 00:05 执行脚本:

5 0 * * * /usr/local/bin/daily_traffic_report.sh > /dev/null 2>&1

保存退出。
如果使用 sudo 编辑 root 的 crontab,确保脚本路径和权限正确。

验证定时任务是否生效: 可以先将时间改为 2 分钟后,观察是否生成新文件。
测试完成后记得改回凌晨时间。

避坑指南:常见问题与解决

1. 报表中无数据

可能是网卡名错误或 vnStat 未启动。
运行 vnstat --iflist 确认网卡,用 systemctl status vnstat 检查服务状态。

2. 权限不足导致脚本无法写入

报表目录建议放在 /var/log 下,并确保执行用户有写权限。
如果使用 root 的 crontab,脚本会自动以 root 运行,一般无权限问题。

3. 日期格式不匹配

vnstat -d 输出的日期格式可能是 2025-01-30 或 01/30/2025,根据系统区域设置不同。
若 grep 不到,可先手动运行 vnstat -d 查看格式,再调整脚本中的日期变量。

4. 脚本手动运行正常,cron 不执行

检查 cron 服务是否运行:systemctl status crond(CentOS)或 systemctl status cron(Ubuntu)。
另外,cron 环境变量与终端不同,建议在脚本中使用绝对路径,或在 crontab 中指定 PATH。

如何查看和利用流量报表

报表文件默认保存在 /var/log/traffic_reports/,文件名包含日期。
你可以直接用 cat 查看:

cat /var/log/traffic_reports/traffic_2025-01-30.txt

如果希望长期保留,可以定期清理旧文件,例如只保留最近 30 天:

find /var/log/traffic_reports/ -name "traffic_*.txt" -mtime +30 -delete

将这条命令加入 crontab,即可自动清理。

对于需要集中管理的场景,可以结合 scp 或 rsync 将报表同步到远程服务器或对象存储。

验证报表是否准确

在服务器上执行 vnstat -i eth0 -d 手动查看昨日流量,与脚本生成的报表对比,数值应一致。
如果发现差异,检查脚本是否在流量统计更新后执行——vnStat 默认每 5 分钟更新一次数据库,凌晨执行时昨日数据通常已完整。

常见疑问:

问:脚本可以统计多个网卡吗? 可以,修改脚本中的 INTERFACE 变量为多个网卡循环,或分别生成报表。

问:vnStat 会占用大量磁盘空间吗? 不会,数据库文件通常只有几 MB,保留数月数据无压力。

问:流量单位是 GB 还是 MB? vnStat 自动适配,输出中会标明单位,无需手动换算。

分享到:
上一篇
服务器独享带宽怎么测试,测速脚本实操
下一篇
服务器IP反向解析设置,邮件建站场景使用
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意