我如何监控Linux上的每用户带宽?

我正在监视不同用户在服务器上消耗多less带宽

实际上,我正在寻找类似于UserIPacct( http://ramses.smeyers.be/homepage/useripacct/ )的东西,我可以得到如下的打印输出:

User Sent Received Flags root 401364 401421 news 2143 2210 lf 221462 348287 

可惜的是,2.6内核系列没有使用useripacct。

我不知道任何预先存在的解决scheme,但是你可以使用netfilter使用“所有者”匹配扩展来做到这一点,尽pipe你可能需要用conntrack来捕捉和计算入站数据包(和你会错过初始连接设置数据包,因为它们不是由用户空间进程pipe理的)。 我可以想象一个非netfilter解决scheme也是可能的(例如类似的),但它几乎肯定会非常快速地变得难看且CPU密集。

老实说,我非常怀疑你正在解决正确的问题。 基于每个用户的stream量统计通过在此基础上分析服务器级日志(Apache,MTA,POP / IMAP服务器等)和记帐/计费来更好地完成(对于他们不需要的位赶上,像DNS)。 试图将所有事情都捆绑回用户几乎肯定不会有你期望的结果。

这可能不是你正在寻找的,但是vnstat有一些不错的function,而且完全免费。 它将实时显示带宽,总天数,周总数,月总数等。

对于实时监控,您可以使用iftop。 如果你正在寻找一个日志和报告解决scheme,那么你可以使用pmacct 。 工作非常好,可以给你半小时,每天,每周,每月和每年的汇总。

顺便说一句,我们使用它与RRD工具相关的工作来产生漂亮的“实时”图。