我希望监控不同用户在服务器上消耗了多少带宽。
实际上,我正在寻找类似 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
答案3
它可能不是你想要的,但是状态监测有一些不错的功能,而且完全免费。它会显示实时带宽、天数总计、周数总计、月数总计等。