2つのホスト(AとB)間で送信されたTCP/UDPパケットの統計を収集したいと思います。次の情報を取得するためにAとBにインストールするツールを探しています。
iptrafがありますが、コマンドラインから設定するのに苦労しています。 tcptrackはデータを集約しません...私は少し迷っています..:Dスクリプトを作成できますtcpdump:/
おそらく、私は非常に明白な何かを見逃しています...
更新:両方のサーバーがubuntu14.04を実行します。
更新2:tcpflowを試してみました(ログはかなり速く成長します)。collectIdを確認します
更新3:特定のIPまたはネットワークへのトラフィックを追跡する最も簡単な方法は、IPTABLESおよび IPTABLES collectD プラグインを使用することです。
これは非常に興味深い質問です。
答えはネットワークの設定によって異なりますが、いくつかのケースについて説明します。
CollectDが答えの一部であると私は確信しています。
まず、メトリックを「毎秒」収集する必要があるため、 CollectDを構成 間隔値
ソリューション番号1-ServerAは特定のインターフェイスでServerBと排他的に通信していますか? (およびその逆)
CollectDを インターフェースプラグイン でインストールします。それはあなたが必要とするものの一部を「収集」します:
CollectDメトリックをGraphiteなどの時系列データベースに転送します。
これらのメトリックを視覚化して、 移動平均関数を適用 できるようになります。それはあなたのニーズにマッチします:
解決策N°2-ServerAはTCPおよび特定のポートでのみServerBと通信していますか?(およびその逆)
似ている。 CollectDを使用し、特定のTCPポートでのみトラフィックを監視します CollectDとTCPConnsプラグイン を使用します。また、 " スライディングウィンドウの平均 "
これを行う1つの方法は、tshark
を使用することです。
以下をせよ :
tshark
オプション_-z
_を実行します。次に:
1秒あたりのパケットレートとバイトレートを取得するには:
_tshark -q -r myfile.cap -z io,stat,1
_
これは次のようなものを生成します:
_=============================
| IO Statistics |
| |
| Interval size: 1 secs |
| Col 1: Frames and bytes |
|---------------------------|
| |1 |
| Interval | Frames | Bytes |
|---------------------------|
| 0 <> 1 | 29 | 2026 |
| 1 <> 2 | 35 | 2440 |
| 2 <> 3 | 35 | 2440 |
| 3 <> 4 | 43 | 2920 |
| 4 <> 5 | 93 | 5776 |
| 5 <> 5 | 77 | 25758 |
=============================
_
パケットとバイトの集約、および平均TCPウィンドウ:
tshark -q -r myfile.cap -z io,stat,0,"AVG(tcp.window_size)tcp.window_size"
結果はこの種のものになります:
_==============================================
| IO Statistics |
| |
| Interval size: 5.109 secs (dur) |
| Col 1: Frames and bytes |
| 2: AVG(tcp.window_size)tcp.window_size |
|--------------------------------------------|
| |1 |2 | |
| Interval | Frames | Bytes | AVG | |
|-----------------------------------------| |
| 0.000 <> 5.109 | 312 | 41360 | 41363 | |
==============================================
_
TCPのウィンドウ平均サイズを方程式から外すと(トラフィックを検査するツールがないとこのメトリックは得られません)、標準の監視ツールを使用して、パケットレート/集約について必要なものをグラフ化できます。たとえば cacti を使用する任意のプロトコル。
編集:(賛成の)他の答えを与えられたスライディングウィンドウが何を意味するのかわからない。ある日付から始まる特定の期間のメトリックの平均を意味する場合(TCPウィンドウサイズではない))、tsharkコマンドを使用して日付フィルターをスローすることですべてを実行できます。
しかし、あなたは単にグローバルな監視ソリューションを求めているようです。 Cacti、collectd、zabbix、shinken、nagios(icingaなどを使用)は、ニーズに合わせて問題なく、必要に応じて特定のトラフィックをフィルタリングできるようにカスタマイズできる必要があります。
両方のサーバーのポートミラーを作成し、2台のコンピューターからwiresharkを実行してデータを収集します。したがって、本番環境のサーバーには影響しません。
1〜2時間のテストを実行するための私のソリューション:
tcpflow -i eth0 -FT
を使用します利点:
不利益: