awsのec2を運用するときに知っておきたいメモリの監視の重要性と方法

awsのec2は簡便にクラウドサーバー上にシステムを構築できることから利用するケースが増えてきました。その運用をする上ではサーバー監視を徹底して行うことが重要ですが、メモリの監視をきちんと行っているでしょうか。

awsのec2を使っているときに見落としてしまいがちなポイントなので、何をしたら良いかを押さえておきましょう。

関連記事:vmconawsの利用メリットと監視システム

awsのec2でメモリの監視が見落とされがちな理由

awsのec2を使ってサーバー上にシステムを構築したときにメモリの監視をしていないケースがしばしばあります。CPU使用率やディスクの状態などについてはきちんと監視していて、あたかも適切なサーバー領域の割り当てができているため、高いパフォーマンスを維持できているように見えているかもしれません。

しかし、メモリの監視を忘れているために突然障害が発生してサーバーがダウンしてしまう場合があります。このような問題はサーバーエンジニアとして十分な経験を積んでいる人が監視をしていればあまり起こることはありません。

しかし、まだサーバー監視に慣れていないエンジニアが仕組みを整えた場合には起こり得るトラブルなのです。awsのec2を使っているときにメモリの監視が見落とされるのは、awsが提供している監視ツールであるCloudWatchを使っている場合がほとんどです。

awsのec2を運用する上ではCloudWatchによる監視は合理的な方法で、多少の費用がかかることを気にしないのであれば一通りのメトリクスの取得や分析、対策などを行うことができます。オフィシャルの監視ツールなので細かいところまで手が届く魅力もあり、アプリケーションやサービスによっては連携も取れているのもメリットです。

ただ、問題点として取得できるデフォルトのメトリクスがかなり制限されていることが挙げられます。

メモリ使用率はデフォルトのメトリクスに含まれていないのです。CloudWatchではCPUの使用率やネットワークのトラフィックの状態、インスタンスやシステムのステータスなど、監視で必要とされる一通りのメトリクスはデフォルトで取得できるようになっています。

そのため、デフォルトに入っているものをきちんと監視していれば大丈夫だと思い込んでしまいがちです。必ずしもオフィシャルの監視ツールだからといって完璧だとは言えません。

特にCloudWatchを使うときには、不足している項目も適宜監視できるようにすることが必要だと留意しておいた方が良いでしょう。

メモリの監視はなぜ重要か

メモリの使用率を監視するのはec2を使っているときになぜ必要なのかと疑問に思う人もいるかもしれません。メモリはいわば一時的に使用できる容量で、十分に機能していないとシステム上にあるアプリケーションの動作が不安定になったり、ネットワークトラフィックに混雑が生じたときに不具合が生じたりしてしまいがちです。

ただ、メモリ領域を拡張すればそれだけ料金が高くなってしまうため、最小限のメモリを確保して適切な運用をできるように監視するのが理想的なのです。また、十分に領域が確保されていても一時的に多くのアプリケーションを動かした場合などに負担が大きくなり、障害が発生するリスクもあるので適切な対応を常に取れるようにしなければなりません。

CloudWatchを使うならどうしたら良いか

CloudWatchを使ってec2のメモリは監視できないのかというとそうではありません。あくまでデフォルトのメトリクスにメモリ使用率に関するものが含まれていないのが原因なので、カスタムメトリクスとして導入してしまえば監視することができます。

awsの方でもメモリの監視の必要性を認識しているユーザーが多いことを考慮し、公式のスクリプトを用意して公開しています。ec2インスタンスからCloudWatchにメトリクスを送れるようにポリシーを作成してロールと関連付けを行い、そのロールを使ってec2インスタンスを作成すればカスタムメトリクスとしてメモリ使用率の取得が可能です。

一度作成してしまえばずっと使えるので、もし社内エンジニアが作成できないなら外注して作ってもらいましょう。

他のサーバー監視ツールも検討しよう

CloudWatchを使ってec2の監視をするのは一般的な方法ではあるものの、必ずしもベストな考え方ではありません。他のサーバー監視ツールを使った方が効率よく監視できる場合も多く、コストも抑えられる可能性が十分にあります。

広く用いられている社内サーバーやクラウドサーバーなどの監視ツールはawsのec2に対しても使用することができるので検討してみましょう。メモリ使用率やディスク使用率などのようにCloudWatchではデフォルトになっていないメトリクスも特に設定する必要なく取得できる仕組みになっているツールもたくさんあります。

また、オープンソースになっていてもっと細かなところまでカスタマイズできるツールも多く、優れた監視体制を整えられます。特にCloudWatch以外のサーバー監視ツールを使った方が良いのは、ec2以外も監視する場合です。

例えば、オンプレミスで利用している自社サーバーとawsのec2のサーバーを同時に運用したいというときには、それぞれ独立した監視をする必要はありません。CloudWatchはawsのサーバーしか監視できませんが、一般的なツールを用いれば両方のサーバーを同時に監視することができるので効率的です。

今までオンプレミスのサーバーを使ってきたのなら、そのまま同じツールを使用して監視するようにすればメモリの監視を忘れるようなこともないでしょう。

内部で行うのが難しいときの対策

これから初めてサーバーを導入して運用するという場合には一から監視体制を整える必要があります。

awsのec2を使う場合にはパフォーマンスの低下や障害の発生を防ぐためにも、割り当てられた領域については自ら監視することが必須です。

サーバーエンジニアとしての経験がないエンジニアに任せるとメモリの監視を忘れるなどの問題を起こしてしまい、障害によって業務が停止するようなリスクがあることは否めません。内部リソースで監視をするのが難しい場合には外注も検討しましょう。

サーバー監視サービスを提供している業者は多くなっていて、awsのec2に特化しているサービスもあります。

メモリの監視を忘れないようにしよう

ec2はawsのサービスの中でも便利で利用しやすいのは確かですが、CloudWatchで監視をするとメモリの監視を忘れてしまいがちです。

パフォーマンスの低下を招かないためにはカスタムメトリクスを作成するか、他のサーバー監視ツールを使うのが良い対策です。また、社内での監視が難しいのであれば外注することも検討するようにしましょう。