cloudwatchでaws上のメモリ使用率を監視する方法

Amazon社が提供しているクラウドコンピューティングサービスである「Amazon Web Service(以下「aws」とします)」は、サーバなどを社内に設置することなく快適なシステム環境の構築が可能です。
豊富なサービスラインナップや高いセキュリティーには定評があり、国内外の名だたる企業が多数採用しています。awsの多彩なサービスの中から、ここではシステム監視サービスの一つである「Amazon cloudwatch(以下「cloudwatch」とします)」について詳しく解説していきます。
awsとは
awsは「Amazon Web Service」の略で、現在世界で最も普及しているクラウドコンピューティングサービスの一つです。170を超えるサービスラインナップや、インターネットバンクや軍関係機関にも採用される程の高いセキュリティーで、多くの企業に支持されています。
awsを採用するメリットとしては、自社にサーバなどを設置・管理する必要がないためコストやヒューマンリソースを大幅に削減可能な点や、サービスアップデートも自動で行われるためシステム管理が容易な点、更に世界各地にAmazon社のシステム拠点が分散されているため、どこか一か所で大きな災害などが発生した際もデータが守られる点等を挙げることができます。
サービスの開始も非常にシンプルで、会員登録ページに簡単な企業情報とクレジットカードの番号を記入するだけでサービスを開始することが可能です。仮想サーバや仮想データベース、仮想メモリなどのインフラ系サービスから、専門の研究者の利用に耐える程の開発ツールや、分析サービスまで幅広いサービスを受けることができます。
料金は従量課金制を採用しており、「使った分だけ支払えばよいので効率的」と捉えることも可能ですが、一方で「費用の予測が立てにくい」「使えば使うほど費用が膨らむ」というリスクを孕んでいる点に注意が必要です。
awsのシステム監視に便利な「Amazon cloudwatch」とは
awsの中にはcloudwatchというシステム監視サービスがあります。cloudwatchはaws上のシステム監視のために使用されることを想定して設計されているため、当然ながらawsとの親和性が非常に高いのが特徴です。
既存の監視ツールでは、監視対象を設定する際はまずサーバを指定して、そのサーバの配下にあるCPUなどを指定する形式を取るのが一般的です。しかし、awsで提供するサービスの中には「そもそもサーバがない」体系のものもいくつかあり、既存のツールを適用するには高度な知識を持った人物による設定作業が必要になります。
しかし、cloudwatchであればawsで提供するサービスであればほぼ全てにマッチするよう設計されているため、このような不都合は生じません。また、サービス開始が非常に簡単なこともcloudwatchの特徴です。
awsの代表的なサービスの一つに「EC2」と呼ばれる仮想サーバ提供サービスがあります。awsではOSを載せた仮想サーバをインスタンスと呼ぶのですが、cloudwatchはEC2のインスタンスを立ち上げるだけで使用開始可能になります。
導入作業が不要な上、インストールすら不要という驚きの簡単さです。使用開始のための初期費用は不要で、月々の基本料金などの費用も不要です。このサービスも従量課金制度が採用されています。システムを監視することでCPUの使用率などをモニタリングすることは、サービスをスムーズに使用し続ける上で重要です。
しかし、cloudwatchの素晴らしい所は、システムの監視だけでなくサーバの負荷が重いことを検知すると、自動的にサーバを複数化して負荷を下げたり、逆に負荷が低い場合はサーバの台数を減らす「オートスケール」に対応していることです。
このため、cloudwatchはPush型の監視方法を採用しています。(参考情報 > aws運用 > CloudCREW)
既存の監視ツールの多くはPolling型といって予め設定された監視対象の状況を一つずつ問い合わせる方式を採用しています。しかし、オートスケールによりサーバ数が変動すると、追加されたサーバは監視対象から漏れてしまいます。
一方、Push型は監視対象が増えた場合は、その対象から自動的に通知を送ってくれるため監視対象が漏れることを防ぐことができるのです。他にもcloudwatchは異常を検知した際にはリソースの状況に応じて、再起動を行ったり、AutoScalingしたりするなど、解決策を自動的に判断してアクションに移す能動性を備えています。
この性質により、企業はシステム異常による被害を最小に留めることが可能となります。更にcloudwatchは使用料金の監視を行うことが可能です。awsが従量課金制を採用していることは既に記載しましたが、思わぬ支出の増加を未然に防ぐためにこの機能は大変有効です。
予め値を設定しておけば、料金がその値を超えた時点でアラームが発信されます。この機能は従量課金制度を採用するawsならではの機能といえるでしょう。
cloudwatchではメモリ使用量の監視ができないって本当?
ここまでcloudwatchの特徴をまとめてきましたが、非常に優れたサービスで非の打ち所が無いようにさえ感じます。しかし、実は少し残念な所があります。それは標準で利用可能な主なメトリクス(メトリクスについての説明は後述します)では、メモリ使用率やディスク使用率が取得できないという点です。
この二つはシステム監視を行う上で重要な項目と言えるため、監視対象に加えたいと考える人も多いのではないでしょうか?そこで、以下ではcloudwatchでメモリの監視を可能にする方法について説明していきますが、その前にcloudwatchの特徴の一つである「メトリクス」について、まず説明します。
メトリクスとは
メトリクスとは監視対象のリソースやアプリケーションから吐き出されるログデータを、グラフなどの直感的に分かりやすい形に変換して表示したものです。従来ではログファイルをFFFTPに落とし、Excelで整形した上でグラフ化するという面倒な手順を踏まなければならなかったのですが、この作業をcloudwatchは自動で行ってくれます。
従って、専門の高度な知識を持たない人でも、モニタリングしたいデータを予め指定しておくだけで、見やすいグラフの状態でモニタリング結果が表示されるようになります。また、メトリクスにはアラーム設定が可能です。
「アラームの作成」をクリックするとウィンドウが開き、設定画面が表示されます。設定内容は初心者でもマニュアル無しで設定可能なくらい、画面を見ただけで直感的に理解できるように設計されています。アラームの送信先や送信頻度、閾値やアラーム名などと共にアラームが発生した際のアクションも指定しておくことが可能です。
メトリクスには、一般的によく使用される監視対象をまとめた「標準メトリクス」と、それ以外の監視対象を含める「カスタムメトリクス」が存在します。標準メトリクスは無料で利用が可能ですが、カスタムメトリクスを使用する場合は別途料金がかかります。
しかし、料金がかかるといっても、月々数ドル程度の低価格に設定されています。メモリの使用率やディスク使用率は、この「標準メトリクスの対象外となっている」ということで、これらが監視対象外であるわけではありません。
メモリ使用率等を監視したい場合はカスタムメトリクスを使用すれば問題を解決することが可能です。
cloudwatchでメモリの監視を行う方法。「カスタムメトリクス」とは
標準メトリクスに含まれない、メモリの使用率などを監視するにはカスタムメトリクスを使用します。カスタムメトリクスを使用するには「cloudwatchエージェント」を利用するのが最もやりやすい方法でしょう。
cloudwatchエージェントはcloudwatchが既にある状態であればインストールすることが可能です。インストールが完了したら、モニターしたいメトリクスやログファイルを指定してエージェント設定ファイルを作成します。
手動で設定することもできますが、ウィザードが用意されているのでこれを利用すれば比較的簡単に設定することができます。ここでメトリクスの収集レベルや収集間隔を決定し、設定しておきます。設定完了後に必要に応じて前述のアラーム設定などを行えば完了です。
カスタムメトリクスを使用して、cloudwatchを使いこなそう
awsを円滑に利用する上で、監視サービスは非常に重要となります。awsのシステム監視にはメリットの多いcloudwatchを利用するのが最適と言えるでしょう。cloudwatchエージェントを更にインストールし、カスタムメトリクスを使用することができれば、awsをより快適に利用することが可能になるはずです。
cloudwatchエージェントを使いこなすのは、初心者には少し難しい部分もあるかもしれませんが、この機会に少し高度な知識を習得してみてはいかがでしょうか。