web-dev-qa-db-ja.com

特定のネットワークを除いて、時間の経過とともに帯域幅を監視しますか?

Linuxサーバーの帯域幅の使用状況を監視したいのですが、問題があります。2つのサーバー間のトラフィックはカウントされず、インターネット全体へのトラフィックのみがカウントされます。ただし、私のサーバーにはネットワークインターフェイスが1つしかないため、私が試したほとんどすべてのことをインターフェイスごとに測定します。特定のIP範囲との間のトラフィックをカウントせずに帯域幅グラフを生成できるツールを知っている人はいますか?

RRDファイルを生成する場合はボーナスポイント(すでに簡単にグラフ化できます)、collectd(標準のcollectdの構成またはプラグイン)で動作する場合は2倍のボーナスポイント。

1
davr

ISPが見るのと同じデータのビューを提供するアップストリームルーターまたはスイッチにアクセスできないと仮定すると、各ホストでiptablesアカウンティングを使用して、他のIPアドレス(またはIP)以外の宛先のバイト/パケットをカウントできます。範囲)、次にこれを自分でRRDに突っ込みます。

[〜#〜]編集[〜#〜]

例として、iptablesで次のようなルールを使用して、アカウンティングを作成できます。

iptables -N ACCOUNT_IN
iptables -N ACCOUNT_OUT
iptables -I INPUT -j ACCOUNT_IN
iptables -I OUTPUT -j ACCOUNT_OUT

iptables -I ACCOUNT_IN -s ! 10.66.1.0/24
iptables -I ACCOUNT_OUT -d ! 10.66.1.0/24

これにより、ACCOUNT_INとACCOUNT_OUTの2つの新しいチェーンが作成されます。次に、INPUTチェーンとOUTPUTチェーンの先頭にジャンプを挿入します。各チェーン内に、リモートアドレスに一致するジャンプターゲットのないルールを追加します。入力の場合、ソースとしてローカル/ 24にアドレスがないものはすべて追加します。出力の場合、宛先としてローカル/ 24にアドレスがないもの。ジャンプルールがないため、パケットはこのチェーンから通常のINPUT/OUTPUTチェーンに戻ります。

アカウンティングデータを確認するには:

# iptables -L ACCOUNT_IN -n -v
Chain ACCOUNT_IN (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    5  2138            all  --  *      *      !10.66.1.0/24         0.0.0.0/0 

# iptables -L ACCOUNT_OUT -n -v 
Chain ACCOUNT_OUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   15  2846            all  --  *      *       0.0.0.0/0           !10.66.1.0/24    

そこから、それらのpkt /バイトカウントを引き出してrrdupdateに渡すことができます(rrdからデータを引き出しても大丈夫だと言ったので、rrdにデータを渡しても大丈夫だと思います。そうでない場合はその質問はおそらくすでにここで尋ねられています)。

読み取るたびにカウンターをゼロにしたい場合は、-Zコマンド(ゼロカウンター)を渡してバイトカウンターをゼロにします。

ホストのいずれかがルーターである場合は、FORWARDチェーンでもアカウンティングを行う必要があります。おそらく、FORWARDチェーンの先頭からACCOUNT_INとACCOUNT_OUTの両方にジャンプを挿入するだけで、正しい処理が実行されます。しかし、私はそれが100%確実に機能することを十分に考えていません

4
Daniel Lawson

IPTablesを介してこれを行うことができるはずです。しかし、私はあなたがこれを行うことができる事前に書かれたソフトウェアを見つけるつもりであるとは本当に疑っています。 http://wiki.openvz.org/Traffic_accounting_with_iptables IPTablesを介してこれを行うための良いスタートです。

ホストされているスイッチにアクセスできないため、これまでの他の提案のほとんどは役に立たないと思います。

2
devicenull

bandwithd を使用できます。これにより、pcapフィルターを通過できるため、サーバー間のトラフィックを除外できます。

2
Steven

ntop のようなものが必要なようです。そこには他にもたくさんのツールがありますが、これはおそらくあなたが望むものを手に入れるための最も速いでしょう。それは、ネットワークから収集してそれについて報告するか、NetflowやsFlowなどの他の入力を使用することができます。

0
Jed Daniels

Netflowをサポートするスイッチを使用してこれを実行します。 Netflowツールは常に無料であるとは限りませんが、これはあなたが探していることをするはずです。

0
SpacemanSpiff