如何在Ubuntu服务器上监视每个用户的网络带宽?


12

我的服务器上有一些Shell用户,每月数据传输量为300GB。如何监控每个用户的带宽使用情况?


这有可能吗?从理论上讲,这似乎比它的价值还要麻烦,因为从技术上讲,您必须使每个使用Internet的进程识别运行它的人,然后找出合并的带宽使用量。除了shell用户之外,您是否还希望基于每个用户进行监视的任何特定原因?因为有了300GB的每月进/出数据,您似乎不可能超过该数量:/
Thomas Ward

必须有可能,否则ISP如何限制每个用户的带宽?
djeikyb 2011年

@EvilPhoenix我要监视每个用户的使用情况。对于至少有20个用户将此服务器用作代理服务器的服务器,300GB的存储空间并不大。
Pedram'3

1
看起来您从Kees Cook那里得到了一个很好的实用答案,但是如果您仍在寻找方法,我想知道以不同的方式对问题进行措辞是否会有所帮助。我发现该指南在Google搜索“如何限制Linux上的用户带宽”:faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html
djeikyb 2011年

Answers:


13

作为根用户,您至少可以使用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进一步扩展此范围以跟踪入站。


谢谢,太好了,我这样做了,但是为什么不能对输入使用相同的方法呢?
Pedram'3

1
数据包的所有者不知道传入的数据包,因为从内核的角度来看,它来自计算机外部。CONNMARK可以用于将TCP流中的数据包绑定到其始发者等,但是我没有这个的有效示例。
Kees Cook

7

我刚遇到NetHogs

NetHogs是一个小的“ net top”工具。它没有像大多数工具一样按协议或每个子网划分流量,而是按进程对带宽进行分组。

在此处输入图片说明

这应该可以让您按用户名跟踪带宽。可能仍需要另外几个工具来记录信息并将其全部添加,但这是不直接使用iptables的良好开端。


也可以在以下模式下启动以汇总流量:(sudo nethogs -v 3 eth0m在开始循环浏览各种模式后反复按)。与结合使用tmux以持续运行(即使ssh会话崩溃)。
tanius '18

6

您可以使用仙人掌

Cacti是RRDTool的完整前端,它存储所有必要的信息以创建图形并在MySQL数据库中填充数据。前端完全由PHP驱动。除了能够在数据库中维护图形,数据源和Round Robin存档外,仙人掌还可以处理数据收集。SNMP支持使用MRTG创建流量图的那些。

vnStat

vnStat是适用于Linux和BSD的基于控制台的网络流量监控器,用于保留所选接口的网络流量日志。它使用内核提供的网络接口统计信息作为信息源。这意味着vnStat实际上不会嗅探任何流量,并且还可以确保系统资源的轻度使用。

他们俩都很棒。


2
谢谢,但是我已经看到了它们两个,而且似乎每个用户都没有提供监视。我想监视每个用户的使用情况。
Pedram'3

5

我看了一下,但没有找到可以满足您需求的综合gui程序包。希望有人存在,最终有人会在这里发布有关它的信息。

我并不是一个真正的网络专家,但是从我的阅读中,除其他外netstat,我iptables应该对基于ip / host的用户记帐做些什么,而这些acct工具对系统进程记帐的作用是什么。这个cyberciti.biz链接可能会帮助您使用以下工具开发系统:

http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/


谢谢,但是正如您所说的,它们用于基于IP的用户计费。我有一些Shell用户,可以在不同的位置使用服务器,特别是在具有相同IP地址(位于NAT后面)的大学部门中。寻找基于用户的计费解决方案(如果可能)。
Pedram'3

netstat -e显示shell用户,让您将ip / host链接到用户名。
djeikyb 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.