我在一台服务器上有一些 shell 用户,每月的数据传输量为 300GB。如何监控每个用户的带宽使用情况?
答案1
作为 root,您至少可以使用 iptables 的“所有者”模块按每个用户测量传出的流量。如果您要监控的所有用户都在 中/root/list-of-users.txt
,您可以执行以下操作:
for login in $(cat /root/list-of-users.txt);
do
iptables -N out_user_$login
iptables -A OUTPUT -m owner --uid-owner $(id -u $login) -j out_user_$login
done
然后可以看到每个用户的出站流量的数据包和字节数:
iptables -L OUTPUT -n -v | grep out_
这可以通过 CONNMARK 进一步扩展,以跟踪入站端。
答案2
我刚刚遇到网络猪:
NetHogs 是一款小型“网络流量”工具。它不像大多数工具那样按协议或子网细分流量,而是按进程对带宽进行分组。
这应该可以让你通过用户名跟踪带宽。可能还需要另外几个工具来记录信息并将其全部加起来,但这是一个很好的开始,无需直接使用 iptables。
答案3
答案4
我找了一会儿,还没有找到一个可以满足你需求的综合 GUI 包。希望有一个,并且最终有人会在这里发布它。
我并不是一个真正的网络专家,但从我读过的内容来看,除其他事项外netstat
,iptables
这些工具对基于 ip/host 的用户记账所做的工作acct
与系统进程记账的工作相同。此 cyberciti.biz 链接可能会引导您使用这些工具开发系统:
http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/