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


12

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


これも可能ですか?理論的には、その価値よりも手間がかかるようです。なぜなら、インターネットを使用する各プロセスに、それを実行しているユーザーを特定してから、結合された帯域幅の使用量を把握する必要があるからです。シェルユーザーとは別に、ユーザーごとに監視したい具体的な理由はありますか?毎月300 GBの入出力データがあるため、その量を超える可能性は低いようです:/
Thomas Ward

それは可能であるに違いありません。そうでなければ、ISPはユーザーごとに帯域幅をどのように制限しますか?
-djeikyb

@EvilPhoenixユーザーごとの使用状況を監視したい。このサーバーをプロキシサーバーとして使用するユーザーが少なくとも20人いるサーバーでは、300GBはそれほど多くありません。
ペドラム

1
Kees Cookから実用的な答えが得られているように見えますが、まだ方法を探しているのであれば、質問を別の言葉で表現することが役立つのではないかと思います。:私は、このガイドでは、「どのようにLinux上の制限ユーザーの帯域幅に」グーグルで見つけfaqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html
djeikyb

回答:


13

ルートとして、少なくとも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でさらに拡張できます。


ありがとう、これはやったけど、なぜ同じメソッドをINPUTに使えないの?
ペドラム

1
パケットの所有者は、カーネルの観点からはマシンの外部から来たため、着信パケットについてはわかりません。CONNMARKを使用して、TCPストリーム内のパケットを発信元などに結び付けることができますが、実際の例はありません。
キーズクック

7

NetHogsに出会ったばかりです

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

ここに画像の説明を入力してください

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


また、トラフィックを合計するモードで開始することもできますsudo nethogs -v 3 eth0(または、モードの切り替えを開始したm後に繰り返し押します)。tmuxsshセッションがクラッシュした場合でも)持続的に実行するために組み合わせてください。
タニウス

6

Cactiを使用できます

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

またはvnStat

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

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


2
感謝しますが、私はそれらの両方を既に見ました、そして、それらはユーザーごとのモニタリングを提供しないようです。ユーザーごとの使用状況をモニターしたいです。
ペドラム

5

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

私は本当にネットワーキング男ないんだけど、私は他の多くのものの間で、読んだからnetstatiptables何占めIP /ホストベースのユーザーのために行うことになっているacctツールは、システム・プロセス・アカウンティングのためにしました。このcyberciti.bizリンクは、これらのツールを使用したシステム開発への道をあなたに設定するかもしれません:

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


感謝しますが、あなたが言ったように、それらはIPベースのユーザーアカウンティングに使用されます。私はいくつかのシェルユーザーが異なる場所で、特に同じIPアドレス(NATの背後)の大学部門でサーバーを使用する可能性があります。可能であれば、ユーザーベースの会計ソリューションを探しています。
ペドラム

netstat -eシェルユーザーを表示し、ip / hostをユーザー名にリンクさせます。
djeikyb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.