要统计服务器一天内传输了多少 GB 的数据流量(即“跑了多少G”),通常指的是网络流量的进出总量。你可以通过以下几种方法来实现:
一、使用系统自带工具(适用于 Linux 服务器)
1. 使用 vnstat(推荐)
vnstat 是一个轻量级的网络流量监控工具,可以按天、小时、月统计流量。
安装:
# Ubuntu/Debian
sudo apt install vnstat
# CentOS/RHEL
sudo yum install vnstat
# 或者使用 dnf(较新版本)
sudo dnf install vnstat
初始化监控网卡(如 eth0 或 ens33):
sudo vnstat -u -i eth0
sudo systemctl enable vnstat
sudo systemctl start vnstat
查看每日流量:
vnstat -d
输出示例:
eth0 / daily
day rx | tx | total
------------------------+-------------+----------
2024-04-01 1.21 GiB | 3.45 GiB | 4.66 GiB
2024-04-02 2.10 GiB | 5.20 GiB | 7.30 GiB
✅ 优点:自动记录历史数据,断电也不丢数据。
2. 使用 iftop 或 nethogs(实时监控,不能统计全天)
这些工具用于实时查看流量,但无法自动统计一天的总量。
iftop -i eth0
nethogs eth0
3. 使用 /proc/net/dev 手动计算
Linux 系统中网络接口的收发数据保存在 /proc/net/dev。
cat /proc/net/dev
输出类似:
face |bytes packets| bytes packets
eth0: 123456789 123456 987654321 987654
- 第一个数字是接收(rx)字节数
- 第三个数字是发送(tx)字节数
你可以写个脚本每天定时记录这些值,然后计算差值。
示例脚本(记录每日流量):
#!/bin/bash
LOGFILE="/var/log/network_usage.log"
INTERFACE="eth0"
# 提取字节数
RX=$(cat /proc/net/dev | grep $INTERFACE | awk '{print $2}')
TX=$(cat /proc/net/dev | grep $INTERFACE | awk '{print $10}')
DATE=$(date +"%Y-%m-%d %H:%M:%S")
echo "$DATE,$INTERFACE,$RX,$TX" >> $LOGFILE
配合 cron 每天执行一次,然后通过计算首尾差值得出一天总流量。
二、使用监控系统(长期推荐)
1. Zabbix / Prometheus + Grafana
可以长期监控服务器网络流量,图形化展示每天的使用情况。
- Prometheus 配合 Node Exporter 可采集网络指标。
- Grafana 可按天统计 rx/tx 流量并求和。
2. NetData
一键安装,实时监控,自带每日流量统计图表。
# 安装 NetData
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
访问 http://服务器IP:19999 查看流量图表。
三、云服务器厂商自带监控(如阿里云、腾讯云、AWS)
如果你使用的是云服务器(如阿里云 ECS、腾讯云 CVM、AWS EC2),可以直接在控制台查看:
- 网络出带宽 / 入带宽
- 按天统计的流量(GB)
- 有些平台直接提供“每日流量消耗”报表
👉 例如:
- 阿里云:云监控 → 网络流量监控
- 腾讯云:云服务器 → 监控 → 网络出/入流量
- AWS:CloudWatch → NetworkIn / NetworkOut
四、计算公式
一天总流量(GB) = (接收总字节数 + 发送总字节数) / (1024³)
例如:
- 接收:5,368,709,120 字节 ≈ 5 GB
- 发送:4,294,967,296 字节 ≈ 4 GB
- 总计:约 9 GB
总结:推荐方案
| 需求 | 推荐方法 |
|---|---|
| 快速查看每日流量 | vnstat |
| 实时监控 | iftop / nethogs |
| 长期自动化统计 | vnstat + cron 或 Prometheus + Grafana |
| 云服务器用户 | 直接使用云平台监控 |
如果你告诉我你的服务器系统(如 Ubuntu/CentOS)和是否是云服务器,我可以给出更具体的命令。
CLOUD云