web-dev-qa-db-ja.com

Linuxでユーザーごとの帯域幅を監視するにはどうすればよいですか?

さまざまなユーザーがサーバーで消費する帯域幅を監視したいと考えています。

事実上、私はUserIPacct( http://ramses.smeyers.be/homepage/useripacct/ )のようなものを探しています。ここで、次のようなプリントアウトを取得できます。

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

残念ながら、useripacctは2.6カーネルシリーズでは使用できません。

2
Aaron

既存の解決策はわかりませんが、「owner」一致拡張機能を使用してnetfilterでこれを行うことができますが、受信パケットをキャッチして説明するためにconntrackを少し試す必要があります(そしてあなたはユーザースペースプロセスによって管理されていないため、初期接続セットアップパケットを見逃します)。ネットフィルター以外のソリューション(la ntopなど)も可能だと思いますが、それはほぼ間違いなく醜く、CPUを非常に早く消費します。

正直なところ、私はあなたが正しい問題を解決しているというかなり深刻な疑いを持っています。ユーザーごとのトラフィックのアカウンティングは、サーバーレベルのログ(Apache、MTA、POP/IMAPサーバーなど)を分析し、それに基づいてアカウンティング/請求を行うことで、より適切に実行されます(そうでないビットには適切なオーバーヘッドがあります)。 DNSのようにキャッチ)。すべてをユーザーに結び付けようとすると、ほぼ確実に期待した結果が得られません。

3
womble

リアルタイムの監視には、iftopを使用できます。ログとレポートのソリューションを探している場合は、 pmacct を使用できます。非常にうまく機能し、30分、毎日、毎週、毎月、毎年のロールアップを提供できます。

余談ですが、これを RRDツール に関連する作業として使用して、ニースの「リアルタイム」グラフを作成します。

1
Sam

それはあなたが探しているものと正確に一致しないかもしれませんが、 vnstat にはいくつかの素晴らしい機能があり、完全に無料です。帯域幅をリアルタイム、合計日数、合計週数、合計月数などで表示します。

0
cop1152