Home > Amazon EC2 > Amazon CloudWatch を使ってみた

Amazon CloudWatch を使ってみた

Amazon EC2で、Amazon CloudWatch(インスタンス監視サービス)、Amazon Elastic Loadbalancer(ロードバランサー), Amazon AutoScaling(自動スケールアウト機構)がリリースされました。

各サービスへのリンクです。

CloudWatchはEC2上のインスタンスを監視する仕組みです。AutoScalingは、自動スケールアウトを実現する仕組みで、CloudWatchで得たデータを使用します。Elastic Load Balancingは、EC2上のインスタンスにパケットをロードバランシングする仕組みです。

これらのサービスを利用すると、負荷に応じて自動でマシンを起動する、”AutoScaling”という仕組みを作ることができます

具体的には、インスタンス群をCloudWatchでリアルタイムで監視します。クラスタがある一定以上のロードになった時、AutoScalingが自動でインスタンスを起動し、LoadBalancerにインスタンスを自動追加します。これにより、唐突にトラフィックが増えた場合などでも、システムが自動的にマシンをサービスに追加し、負荷に耐えることが出来るようになります。ついにここまで来たか~という感じですね。

CloudWatchのお値段は、1インスタンス/1時間当たり$0.015です。1か月にすると$10.8です。AutoScalingは、CloudWatchを使っていると無料で使用することが出来ます。Elastic Load Balancingは、ロードバランサー1個/1時間当たり$0.025かかり、1か月にすると$18です。さらに1Gの転送当たり$0.008かかります。

仮想シナリオとして、10台のマシン+1つのロードバランサー(100Gの転送)を1か月、EC2上で運用した場合を考えてみると、以下のようになります。

  • Small Instance * 10 : $720
  • CloudWatch * 10 : $108
  • Load Balancing * 1 : $18
  • Load Balancing (Transfer 100G) : $0.8

全部込みで月に$846.8となります。もっと強力なインスタンスを使うと高くなりますし、Elastic IPを降ったり、それ経由で転送もしたりしますが、Smallインスタンスでの大体の価格感はこのぐらいになります。この金額でAutoScaling付きのクラスタが手に入るというのは凄いです。

Webアプリケーションのボトルネックの多くはRDBMSなので、手動オペレーション無しのマシンの追加は厳しいかもしれません。その辺はソフトウェア側のレイヤーで頭を使って行く必要が有りそうです。マシンを自動追加/削除出来るデータストア、それを使用するWebフレームワークが確立されれば、それが使えますね(key-val store? 自動でshardingするdbms middleware?)。

手始めにCloudWatchだけ使ってみました。現状のところはコマンドラインからしか使えなくて、モニタリング結果もコマンドラインでしか見れないので、自分でgangliaなりmuninなりを入れたほうが良いです。そのうちAWS Management Consoleで視覚的に見れるようになるのかな…?

まずインスタンスを監視対象に加えます。ec2-describe-instancesでinstanceIDを確認します。この時点では、monitoring-disabledになっています。

$ ec2-describe-instances
RESERVATION     r-3aee6c53      566960732458    default
INSTANCE        i-54f7933d      ami-1109ee78    ec2-174-129-216-68.compute-1.amazonaws.com      ip-10-250-18-181.ec2.internal   running ec2     0            m1.small        2009-03-28T14:13:53+0000        us-east-1b      aki-a71cf9ce    ari-a51cf9cc            monitoring-disabled

次に、ec2-monitor-instancesコマンドでインスタンスの監視を開始します。

$ ec2-monitor-instances i-54f7933d
i-54f7933d      monitoring-pending

しばらくしてec2-describe-instancesコマンドを打つと、monitoring-enabled状態に変わっていることが分かります。

$ ec2-describe-instances
RESERVATION     r-3aee6c53      566960732458    default
INSTANCE        i-54f7933d      ami-1109ee78    ec2-174-129-216-68.compute-1.amazonaws.com      ip-10-250-18-181.ec2.internal   running ec2     0            m1.small        2009-03-28T14:13:53+0000        us-east-1b      aki-a71cf9ce    ari-a51cf9cc            monitoring-enabled

結果を取得するには、mon-get-statsコマンドを使用します。

$ mon-get-stats CPUUtilization --start-time 2009-05-19T04:00:00+09:00 --end-time 2009-05-19T04:10:00+09:00 --period 60 --statistics Average --namespace AWS\/EC2 --dimensions "InstanceId=i-54f7933d"
2009-05-18 19:00:00  1.0  9.98  Percent
2009-05-18 19:01:00  1.0  2.3   Percent
2009-05-18 19:02:00  1.0  0.77  Percent
2009-05-18 19:03:00  1.0  2.3   Percent
2009-05-18 19:04:00  1.0  2.69  Percent
2009-05-18 19:05:00  1.0  9.22  Percent
2009-05-18 19:06:00  1.0  0     Percent
2009-05-18 19:07:00  1.0  0.39  Percent
2009-05-18 19:08:00  1.0  1.92  Percent
2009-05-18 19:09:00  1.0  3.4   Percent

自分で日付指定をするのが面倒です。データは2週間蓄積されるようです。CPUUtilizationのほかにも、Disk・Networkの値が取得できます。取得できる値はmon-list-metrics –headersで確認出来ます。

CloudWatchが出来るのはこのぐらいです。CloudWatchは監視用というか、AutoScaling用に使用するものという感じがしました。AutoScaling, Elastic Loadbalancingについてはまた今度。なんか作ってみないと。

Similar Posts:

Trackbacks (Close):1

pingback from 5月21日 「著者座談会:「クラウド本」でこれを伝えたかった!」 | P2P today ダブルスラッシュ 09-05-21 (Thu) 1:10

[...] [クラウド]Amazon CloudWatch を使ってみた - moratorium [...]

Home > Amazon EC2 > Amazon CloudWatch を使ってみた

お薦め本
広告
Archives
Categories

Return to page top