毎月300 GBのデータ転送を行うサーバーにシェルユーザーがいます。ユーザーごとの帯域幅使用量を監視するにはどうすればよいですか?
毎月300 GBのデータ転送を行うサーバーにシェルユーザーがいます。ユーザーごとの帯域幅使用量を監視するにはどうすればよいですか?
回答:
ルートとして、少なくとも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でさらに拡張できます。
NetHogsは小さな「ネットトップ」ツールです。ほとんどのツールが行うように、プロトコルごとまたはサブネットごとにトラフィックを分割する代わりに、プロセスごとに帯域幅をグループ化します。
これにより、ユーザー名で帯域幅を追跡できるはずです。情報をログに記録して追加するには、さらに別のツールが必要になる場合がありますが、iptablesを直接使用せずに開始するのは良い方法です。
sudo nethogs -v 3 eth0
(または、モードの切り替えを開始したm
後に繰り返し押します)。tmux
(ssh
セッションがクラッシュした場合でも)持続的に実行するために組み合わせてください。
Cactiを使用できます
CactiはRRDToolの完全なフロントエンドであり、グラフを作成してデータをMySQLデータベースに取り込むために必要なすべての情報を保存します。フロントエンドは完全にPHP駆動です。cactiは、データベースでグラフ、データソース、およびラウンドロビンアーカイブを維持できることに加えて、データ収集を処理します。MRTGでトラフィックグラフを作成するために使用されるSNMPサポートもあります。
またはvnStat
vnStatは、選択したインターフェイスのネットワークトラフィックのログを保持する、LinuxおよびBSD用のコンソールベースのネットワークトラフィックモニターです。カーネルが提供するネットワークインターフェイス統計情報を情報ソースとして使用します。これは、vnStatが実際にトラフィックをスニッフィングしないことを意味し、システムリソースの軽い使用も保証します。
両方とも素晴らしいです。
私は少し見て、あなたが望むことをする包括的なGUIパッケージを見つけていません。1つが存在し、誰かが最終的にここに投稿することを願っています。
私は本当にネットワーキング男ないんだけど、私は他の多くのものの間で、読んだからnetstat
とiptables
何占めIP /ホストベースのユーザーのために行うことになっているacct
ツールは、システム・プロセス・アカウンティングのためにしました。このcyberciti.bizリンクは、これらのツールを使用したシステム開発への道をあなたに設定するかもしれません:
http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/
netstat -e
シェルユーザーを表示し、ip / hostをユーザー名にリンクさせます。