« 【AWS発表】 AWSモバイルSDKが、EC2をはじめサポート対象のサービスを拡張 | メイン | AWS アーキテクチャセンターとWebセミナーのご案内 »

【AWS発表】 クラウド監視サービスAmazon CloudWatchでカスタムのメトリクスが使用可能に

今回の発表により、Amazon CloudWatchにおいて、アプリケーションレベルのメトリクスを保存できるようになりました。このカスタムのメトリクスをベースに、グラフを見たり、アラームを設定したり、メトリクスに応じて自動アクションを設定したりできるようになります。

新しいメトリクスは必ずしも事前に定義しておく必要はありません。また、メトリクスの保存のために、ストレージ領域を事前に確保しておく必要もありません。単純に、新しいメトリクスを保存することができ、そのための新しいメトリクスが自動的に作成されます。EC2上で稼働するリソースを監視でき、しかも、インターネット上のどこからでもそれが可能になるのです。

ListMetrics関数を使って全てのメトリクスをリストアップできます。CloudWatchからデータを引き出すことができるグラフ用、可視化用のツールであればどれでも、このユーザー定義メトリクスにほとんど変更無しにアクセスすることができるでしょう。

メトリクスの値は、new PutMetricData関数、もしくは、mon-put-dataというコマンドラインツールで保存することができます。

CloudWatchのメトリクスは、名前空間(namesupaces)でスコープが制御されており、10個までのディメンション(dimentions)でさらに条件付けされます。例えば、レイテンシー(latency)は、アプリケーション毎("App1" と"App2")にお互いに分離した形でトラックすることができます。

$ mon-put-data -namespace App1 -metric-name Latency -value 104
$ mon-put-data -namespace App2 -metric-name Latency -value 120

ディメンション(Dimensions)は、名前と値のペアであり、メトリクスを限定するのに使えます。例えば、レイテンシー(latency)は、上記の例に、ディメンションを加えることで、ホスト毎に分けてトラックできるようになります。

$ mon-put-data -namespace App1 -metric-name Latency -dimensions "Host=host1" -value 104
$ mon-put-data -namespace App1 -metric-name Latency -dimensions "Host=host2" -value 180
$ mon-put-data -namespace App1 -metric-name Latency -dimensions "Host=host3" -value 90

メトリクスは、異なる名前空間とディメンションを持ち、それらは、離散値として扱われます。この例では、アプリケーションレベルのメトリクスは、ホストレベルのメトリクスとは分離されているということです。つまり、それを取り出したいような形で、メトリクスをフォーマットに入れるように、注意しなければいけないということです。

CloudWatchでは、複数のソースからメトリクスのデータを提供することもできます。 数百、数千のEC2インスタンスからなるスケーラブルなアプリケーションを監視することが可能です。新しいホストが追加された際には、すでに存在するアプリケーションレベルのメトリクスに値を追加することができるようになります。また、そうやった入力されたメトリクスを、ホスト単位で取りだしたり、全体として取り出したりすることができるのです。

カスタムメトリクスを使った例をみてみましょう。下記のチャートは、フリーなメモリ量(ギザギザのライン)と、アプリケーションのページレイテンシーを表現しています。

上記をみると、フリーなメモリ量が減るにつれて、ページレイテンシーが増加しているのが分かります(どうやら、ガベージコレクションが行われていることが推測できます)。

メトリクスを保存する際には、標準のユニット(秒、ビット、バイト、パーセント、カウント、バイト/秒、ビット/秒、カウント/秒)のリストから、選択して使用することができます。全てのメトリクスが2週間に渡り保存されます。

一旦、メトリクスがCloudWatchに保存されると、AWSリソース上のメトリクスであるかのように扱えるようになります。GetMetricStatistics関数を用いて、あらゆる時間範囲において平均値、最小値、最大値、合計、カウントを計測できるようになります。また、AWS Management Console上で、グラフを表示されることができます。

メトリクスに対して、CloudWatchのアラームを作成することもできます。例えば、レイテンシーを監視して、15分間に渡り平均のレイテンシーが上昇したいた際には、SNS通知をメールで送信する、といったことが可能です。

メトリクスを用いて、Amazon EC2インスタンスを自動的にスケールアウト、スケールインさせることもできます。これは、これまでのようにシステム負荷やパフォーマンスに直接関係したメトリクスを用いてスケール調整するだけでなく、アプリケーションの負荷や顧客データ等のより精度の高いメトリクスを用いてスケール調整ができるということです。例えば、登録ユーザー数、アクティブなセッション数、ページロードの時間、エラー率などを用いることができるでしょう。

このカスタムメトリクス機能は、メトリクス単位で課金されます。メトリクスあたり、どれだけの値を保存しようとも、月毎に$0.5で課金されます。また、今回の発表に伴って、EC2の詳細モニタリング機能を値下げして、毎月$3.50にしました。10メトリクスまでは追加料金無しで保存することができます。これは、カスタムメトリクスにも、EC2詳細監視メトリクスの両方に用いることができます。

.NetJavaPHP用のAWS SDKが、現時点で、この新しい機能をサポートしています。

HPのSiteScope製品は、今回のカスタムメトリクスに対するサポートを開始しています。SiteScopeを設定して、必要なメトリクスをCloudWatchに出力することができます。また、HP diagnostics probesを、EC2のAMIに組み込むことで、起動したEC2インスタンスをHP Diagnostics UI上に表示されることができます。詳細は、HP APM (Application Performance Management) ブログを参照ください。

また、すでに今回の発表のプライベートベータにおいて、複数のお客様(Loggly.comBizoBitRockなど)にも、カスタムメトリクスをご利用頂いき、ご好評いただいております(コメント詳細はこちら)。 

是非、カスタムメトリクスを使ってみてください!

玉川憲 (@KenTamagawa)

コメント

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31