toto_1212

技術のログをツラツラ書きます。自分用ですが参考にしていただけたら嬉しいです。間違ってたらドンドン突っ込んでください。

AWS移行時の転送量調査

AWSは下り転送量が課金対象となるため、AWSを初めてみようと思った時に転送量が分からない
から知らないうちに莫大な料金を請求されるのではないかという不安が出ると思います。

しかし私の経験上、実際運用してみるとそんなに転送量って発生しません。

もちろんシステム(Webサイト)の特性で大きく変化すると思いますが、ストリーミング配信
するような仕様でない限り青天井ってことはないと思います。
※ストリーミングであればAmazon Elastic Transcoderで構築すると簡単で安価に済みます。
 Cloud Frontでキャッシュとか有効かと思われがちですが、Cloud Front側でも転送料金が
 あるんのでそんなにかわりません。
 クライアント側でキャッシュを持たせたり、可能な限りファイルを小さくするようが現実的
 のようです。

現在運用中のシステムからのAWS移行を検討されていて、転送量関連で不安があるようであれば
実際に計測してみるといいと思います。

いくつかツールがありますので簡単に。

【iftop】

今回はお試しなのでAmazon Linuxで試していますが、もちろんオンプレサーバーでも可能です。

①iftopをインストールする。

$ wget http://pkgs.repoforge.org/iftop/iftop-0.17-1.el6.rf.x86_64.rpm
$ rpm -ivh iftop-0.17-1.el6.rf.x86_64.rpm

$ rpm -qa | grep iftop
iftop-0.17-1.el6.rf.x86_64

※yumで入れようと思ったら入らなかった。epelレポジトリにあるようだったが
 面倒なのでwgetで取得した。

②iftopを起動する。監視したいインターフェースを指定する。

$ iftop -i eth0

オプション
 -n                  don't do hostname lookups 
            ホスト名解決をしない
 -N                  don't convert port numbers to services
           ポート番号からサービス名への変換をしない
 -p                  run in promiscuous mode (show traffic between other
                     hosts on the same network segment)
           プロミスキャスモードで起動する(同セグメントのホストを監視)
 -b                  don't display a bar graph of traffic
           グラフ表示をしない
 -B                  Display bandwidth in bytes
           バイト表示にする
 -i interface        listen on named interface
           対象となるインターフェースを指定
 -f filter code      use filter code to select packets to count
                     (default: none, but only IP packets are counted)
           フィルターを設定する。(指定ない場合はIPパケットが対象)
 -F net/mask         show traffic flows in/out of network
           ネットワーク指定。          
 -P                  show ports as well as hosts 
           ポート番号を表示する。
 -m limit            sets the upper limit for the bandwidth scale
           スケール上限を表示する。
 -c config file      specifies an alternative configuration file
           設定ファイルを指定する。

フィルタして特定のトラフィックしか取得したくない場合はフィルタオプションを使う。
dst host ホスト名
dst net ネットワーク
dst port ポート番号
dst portrange 開始ポート番号-終了ポート番号
src host ホスト名
src net ネットワーク
src port ポート番号
src portrange 開始ポート番号-終了ポート番号
gateway ゲートウェイ
ip proto プロトコル

例えばHTTP通信だけのトラフィックを確認したい場合は、、、
iftop -i eth0 -f "dst port 80"

設定ファイル(hogehoge.cfg)に書いてそれを読み込むようにすれば楽できる
$ vi hogehoge.cfg
interface: eth0
dns-resolution: no
show-bars: no
log-scale: yes
その他の設定項目はmanにて確認して下さい。

$ iftop -c hogehoge.cfg

f:id:toatoshi:20130926101352j:plain
表の見方
TX:トラフィックの送信量
RX:トラフィックの受信量
cumm:iftopを起動してからのトラフィック総量(上り、下り別)
TOTAL:iftopを起動してからのトラフィック総量
peak:トラフィックの最大量
rates:左から直近2秒、直近10秒、直近40秒のトラフィック量の平均値

<<参考>>
$ man iftop

TCP Monitor Plus

Windows用のネットワークモニターで、インストール形式ではなく実行形式のため
手軽に利用できる。

ここからダウンロード
http://www.vector.co.jp/soft/win95/net/se260331.html

TCP Monitor Plusを起動する。ダウンロードしたアーカイブを解凍し、tcpmon.exeを
実行することで起動する。
総送信量、送受信量を見ることでトラフィック量を確認する。

f:id:toatoshi:20130926103123j:plain

【NetWorx】

Windows用のネットワークモニターでデータ転送量を監視してリアルタイムにグラフ表示し、
日別等のサマリ機能や転送制限の設定で設定値を超過した際は通知してくれる機能もある。

ここからダウンロード
http://www.softperfect.com/products/networx/

①NetWorxを起動する。インストーラー版とポータブル版があるで好きなほうをダウンロードする。
今回はポータブル版で実行する。
ダウンロードしたアーカイブを解凍し、networx.exeを実行し、言語や対象のインターフェースを
指定することで起動する。
タスクトレイ内にアイコンがあるので、アイコンを右クリックしレポートを表示することが可能。

f:id:toatoshi:20130926103145j:plainf:id:toatoshi:20130926103151j:plain