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

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

我希望监控不同用户在服务器上消耗了多少带宽。

实际上,我正在寻找类似 UserIPacct 的内容(http://ramses.smeyers.be/homepage/useripacct/),我可以在其中打印出如下内容:

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

遗憾的是,useripacct 不适用于 2.6 内核系列。

答案1

我不知道有任何现成的解决方案,但您可以使用 netfilter 的“所有者”匹配扩展来实现这一点,尽管您可能需要使用 conntrack 来捕获和计算入站数据包(并且您会错过初始连接设置数据包,因为它们不受用户空间进程管理)。我认为非 netfilter 解决方案也是可行的(lantop 等),但它几乎肯定会很快变得丑陋并占用大量 CPU。

不过,老实说,我非常怀疑你解决的问题是否正确。按用户计算流量的最好方法是分析服务器级日志(Apache、MTA、POP/IMAP 服务器等),并在此基础上进行计费/开票(对未捕获的部分,如 DNS,进行适当的开销)。试图将所有内容都与用户联系起来几乎肯定不会得到你期望的结果。

答案2

对于实时监控,您可以使用 iftop。如果您正在寻找日志和报告解决方案,那么您可以使用額定。运行良好,可以为您提供半小时、每日、每周、每月和每年的汇总。

顺便说一下,我们将其用作与RRD 工具生成漂亮的“实时”图表。

答案3

它可能不是你想要的,但是状态监测有一些不错的功能,而且完全免费。它会显示实时带宽、天数总计、周数总计、月数总计等。

相关内容