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

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

我在一台服务器上有一些 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

您可以使用仙人掌

Cacti 是 RRDTool 的完整前端,它存储了创建图表所需的所有信息,并在 MySQL 数据库中填充数据。该前端完全由 PHP 驱动。除了能够在数据库中维护图表、数据源和循环存档外,Cacti 还负责数据收集。对于习惯使用 MRTG 创建流量图的用户,它还提供 SNMP 支持。

或者统计网

vnStat 是一款基于控制台的网络流量监控器,适用于 Linux 和 BSD,可记录所选接口的网络流量。它使用内核提供的网络接口统计信息作为信息源。这意味着 vnStat 实际上不会嗅探任何流量,同时还能确保系统资源的使用量很少。

他们两个都很棒。

答案4

我找了一会儿,还没有找到一个可以满足你需求的综合 GUI 包。希望有一个,并且最终有人会在这里发布它。

我并不是一个真正的网络专家,但从我读过的内容来看,除其他事项外netstatiptables这些工具对基于 ip/host 的用户记账所做的工作acct与系统进程记账的工作相同。此 cyberciti.biz 链接可能会引导您使用这些工具开发系统:

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

相关内容