我的服务器上有一些Shell用户,每月数据传输量为300GB。如何监控每个用户的带宽使用情况?
我的服务器上有一些Shell用户,每月数据传输量为300GB。如何监控每个用户的带宽使用情况?
Answers:
作为根用户,您至少可以使用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进一步扩展此范围以跟踪入站。
我刚遇到NetHogs:
NetHogs是一个小的“ net top”工具。它没有像大多数工具一样按协议或每个子网划分流量,而是按进程对带宽进行分组。
这应该可以让您按用户名跟踪带宽。可能仍需要另外几个工具来记录信息并将其全部添加,但这是不直接使用iptables的良好开端。
sudo nethogs -v 3 eth0
或m
在开始循环浏览各种模式后反复按)。与结合使用tmux
以持续运行(即使ssh
会话崩溃)。
您可以使用仙人掌
Cacti是RRDTool的完整前端,它存储所有必要的信息以创建图形并在MySQL数据库中填充数据。前端完全由PHP驱动。除了能够在数据库中维护图形,数据源和Round Robin存档外,仙人掌还可以处理数据收集。SNMP支持使用MRTG创建流量图的那些。
vnStat是适用于Linux和BSD的基于控制台的网络流量监控器,用于保留所选接口的网络流量日志。它使用内核提供的网络接口统计信息作为信息源。这意味着vnStat实际上不会嗅探任何流量,并且还可以确保系统资源的轻度使用。
他们俩都很棒。
我看了一下,但没有找到可以满足您需求的综合gui程序包。希望有人存在,最终有人会在这里发布有关它的信息。
我并不是一个真正的网络专家,但是从我的阅读中,除其他外netstat
,我iptables
应该对基于ip / host的用户记帐做些什么,而这些acct
工具对系统进程记帐的作用是什么。这个cyberciti.biz链接可能会帮助您使用以下工具开发系统:
http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/
netstat -e
显示shell用户,让您将ip / host链接到用户名。