web-dev-qa-db-ja.com

Ubuntuサーバーでユーザーごとのネットワーク帯域幅を監視する方法は?

毎月300 GBのデータ転送があるサーバーにシェルユーザーがいます。ユーザーごとの帯域幅使用量を監視するにはどうすればよいですか?

12
Pedram

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でさらに拡張できます。

13
Kees Cook

私はちょうど出会いました NetHogs

NetHogsは小さな「ネットトップ」ツールです。ほとんどのツールが行うように、プロトコルまたはサブネットごとにトラフィックを分類する代わりに、プロセスごとに帯域幅をグループ化します。

enter image description here

これにより、ユーザー名ごとに帯域幅を追跡できます。情報をログに記録して追加するために、さらに別のツールが必要になる場合がありますが、iptablesを直接使用せずに開始することをお勧めします。

7
djeikyb

Cacti を使用できます

CactiはRRDToolの完全なフロントエンドであり、グラフを作成し、MySQLデータベースにデータを取り込むために必要なすべての情報を保存します。フロントエンドは完全にPHP駆動されます。 cactiは、データベースでグラフ、データソース、およびラウンドロビンアーカイブを維持できることに加えて、データ収集を処理します。また、MRTGでトラフィックグラフを作成するために使用されるSNMPサポートもあります。

または vnStat

vnStatは、選択したインターフェイスのネットワークトラフィックのログを保持する、LinuxおよびBSD用のコンソールベースのネットワークトラフィックモニターです。カーネルが提供するネットワークインターフェイス統計情報を情報ソースとして使用します。これは、vnStatが実際にトラフィックをスニッフィングしないことを意味し、システムリソースの軽い使用も保証します。

両方とも素晴らしいです。

6
sebikul

私は少し見えましたが、あなたが望むことをする包括的なGUIパッケージを見つけていません。うまくいけば、1つが存在し、誰かがそれについて最終的にここに投稿するでしょう。

私は実際にはネットワーキングの男ではありませんが、私が読んだことから、とりわけnetstatiptablesはip/Hostベースのユーザーアカウンティングでacctツールはシステムプロセスアカウンティングに対応しました。このcyberciti.bizリンクは、これらのツールを使用したシステム開発への道をあなたに設定するかもしれません:

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

5
djeikyb