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

Ped*_*ram 12 server 10.04 monitoring network-monitoring

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

Kee*_*ook 13

作为 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
Run Code Online (Sandbox Code Playgroud)

然后每个用户的出站流量的数据包和字节数是可见的:

iptables -L OUTPUT -n -v | grep out_
Run Code Online (Sandbox Code Playgroud)

这可以通过 CONNMARK 进一步扩展以跟踪入站方。


dje*_*kyb 7

我刚刚遇到了NetHogs

NetHogs 是一个小型的“网络顶部”工具。它不像大多数工具那样按协议或每个子网分解流量,而是按进程分组带宽。

在此处输入图片说明

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


seb*_*kul 6

您可以使用仙人掌

Cacti 是 RRDTool 的完整前端,它存储创建图形所需的所有信息,并用 MySQL 数据库中的数据填充它们。前端完全由 PHP 驱动。除了能够在数据库中维护图形、数据源和循环归档之外,cacti 还可以处理数据收集。对于那些习惯于使用 MRTG 创建流量图的人,也有 SNMP 支持。

或者vnStat

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

他们两个都很棒。

  • 谢谢,但我已经看到了他们两个,似乎他们都没有提供每个用户的监控。我想监控每个用户的使用情况。 (2认同)

dje*_*kyb 5

我看了一点,我还没有找到一个全面的 gui 包,可以做你想要的。希望存在一个,并且最终有人会在这里发布它。

我不是一个真正的网络专家,但从我读过的内容来看,除其他外netstatiptables应该为基于 ip/host 的用户记帐做这些acct工具为系统进程记帐所做的工作。这个cyberciti.biz 链接可能会让您开始使用这些工具开发系统:

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