システム監視、クラウドではどう違う?AWS監視の最適解とは?
重要度の高いシステムに対して監視を行うことは現在のITシステムの必須要件と言えますがAWS上での監視はどのように行うべきなのでしょうか。ここではAWS監視の基本について従来型のオンプレミス監視との比較を交えてわかりやすく解説します。
目次
システム監視の目的
AWS監視について考える前にまずはシステム監視とはどのようなものかについて考えてみたいと思います。
まずシステム監視の目的として
- 異常(障害)を検知し、いち早く復旧させる
- システム障害の予防、早期発見
- キャパシティプランニング
といった点が挙げられます。
「異常(障害)を検知し、いち早く復旧させる」
はもちろん障害をいち早く検知することが最も重要ですが、監視で取得したデータの内容を分析することでよりスピーディな原因調査を行うことができます。このため早期の障害復旧、障害後の対策にも非常に有用です。
「システム障害の予防、早期発見」
はたとえばユーザリクエストが多くCPUの利用率が非常に高い状態が継続していることがモニタリングによって事前にわかれば、ユーザーがアクセスできなくなるような障害となる前にサーバを増強する等の手を打つことができ未然に障害を防ぐことが可能となります。
「キャパシティプランニング」
はインフラ機器のリソースを定期的にモニタリングし、集計することで長期的にどのような形で増減するのかの見込みを立てることができます。監視のモニタリング情報から長期的にサーバやネットワークのリソースをどのように増減してゆけばよいか計画でき、システムの効率的な利用に向けた分析を行うことができます。
AWS監視のポイント サーバの監視からサービスの監視へ
それではAWS監視についてはどのように考えるべきなのでしょうか。まずAWSをはじめとしたクラウドサービスの大きな利点としてマネージドサービスを利用できるということが挙げられます。マネージドサービスとはAWSの説明では以下となります。
“マネージドサービスはハードウェアのセットアップ、データベースのセットアップ、パッチ適用、バックアップなどの時間がかかる管理タスクを自動化しコスト効率とサイズ変更可能なキャパシティーを提供します。”
すなわちマネージドサービスを利用することでユーザーの管理、運用の負荷、リソース面の懸念が大きく軽減されることになります。
このマネージドサービスを利用した場合、機器のリソースは自動拡張するケースがほとんどであるためオンプレミスで起こる機器のリソース不足について心配するケースがほぼなくなります。マネージドサービスだけでなくオートスケールのようにシステム負荷に応じて自動拡張する機能を実装する場合にも同様のことが言えます。
このことから特にマネージドサービスのようなAWSの監視はサーバリソースの監視からサービスそのものの状態監視を考えることが大切なポイントとなります。
AWSに最適化された24時間365日の運用・監視をご提供するスタイルズのAWS監視、運用・保守サービスはこちら→
監視ツールの選択ポイント まずはCloudWatchファーストで
実際AWSでどのように監視を行うかについてですが、まずサーバやサービスでの異常を検知するためのツールが必要となります。ツールの選択肢としてはAWSで提供しているAmazon CloudWatchとZabbixやCACTIのような従来型の監視ツールがあります。
監視ツールの選択は利用の用途や環境によって異なりますがAWSの監視ツールとしては以下のような理由からまずはCloudWatchの利用を検討すべきです。
- セットアップ不要
- AWSサービス向けに最適化されている
- AWSサービスとの連携
- マネージドサービスの監視
- オートスケール対応
- 運用の自動化
- 料金の監視
CloudWatchはAWSが提供するAWSに最適化された監視サービスで他のAWSサービスのステータスの変化を検知した際にそのサービスと連携し、様々なアクションを起こすことができます。また、従来型の監視ツールでは監視を行うことが難しいマネージドサービスの監視にも対応しています。
オンプレミスとは異なり従量課金となるAWSの利用料金に関するモニターも行うことができます。これら様々な利点からAWSの監視ツールとしてまずはCloudWatchを第一の選択肢として検討することが最善といえます。
ただしCloudWatchで監視に対する要件をすべて賄えるかというとそうではありません。特定URLに対する複雑なシナリオ監視やSNMP監視は現状CloudWatchでは対応しておらず、このケースでは従来型監視ツールの検討が必要です。
また、まずは既存の監視設計を変えずに既存の監視ツールをそのままAWS上に移行したいケースもあるかと思います。まずはCloudWatchを検討することが最善ではありますが、AWS導入時にどのような監視を行うかによって監視ツールの選択を行うことが重要です。
AWSに最適化された監視ツール Amazon CloudWatch
それではCloudWatchとはどのようなものなのでしょうか。CloudWatchの基本的な機能構成は以下のような形となっています。
CloudWatch
システムの正常性監視、リソースの監視等基本サービスおよびAWS監視サービスの総称
CloudWatch Logs
システムのログ収集、分析を行う機能
CloudWatch Alarm
メトリクスやログを収集して、メールなどで通知を行う機能
CloudWatch Events
イベントベース、およびスケジュールベースでアクションを起こす機能
実際にはこれらの機能を組み合わせて、障害やアラートの検知、モニタリング、リソースの自動拡張、運用の自動化といったことが可能となります。
AWSに最適化された24時間365日の運用・監視をご提供するスタイルズのAWS監視、運用・保守サービスはこちら→
CloudWatchでできること
CloudWatchで実際にどのような監視を行うことができるのでしょうか。以下にCloudWatchで実行できる基本的な機能について記載します。
正常性監視、リソース監視
従来型の監視と同様仮想サーバとして提供されるEC2のようなアンマネージドサービスだけでなくDBのマネージドサービスであるRDSのようなマネージドサービスの監視を行うことができます。また、取得した情報から自動でWebコンソール上にグラフ化を行うことができるため、障害検知だけでなく、モニタリング結果からサービス状況の傾向をつかむことが可能となります。
ログ監視
AWSのサービス上で発生する各種ログをCloudWatchLogsで一元的に集約することができます。取得したログはWebコンソール上で検索や閲覧が可能となります。
またlog特定文字列を指定してアラートを上げることも可能です。
アクション機能
CloudWatch Eventsを利用することによりAWSサービス上で発生したアラート内容に応じて各種アクションの実行が可能となります。
具体的にはアラートを検知した際に以下のようなサービスとの連携が可能です。
・Amazon SNSを利用したアラートメールの送信
・AWS Systems Managerを利用したサーバ再起動等の運用自動化
・AWS Lambdaを利用したプログラムの実行
利用料金の監視
AWSはサービスやリソースの利用時間、利用量に応じて金額が変動する従量課金制であるためリソースの停止漏れ等の要素で予定外の料金が発生する可能性がありますが、CloudWatchではAWSの利用料金の監視を行うことができ一定金額を超えるとアラームメール通知が可能です。この機能を利用すれば過剰な課金を検知することができ、請求時に初めて予定外の金額となっていることに気づくといったことを未然に防ぐことができます。
これらCloudWatchの各種機能及び他サービスとの連携を行うことで監視や運用に関するユーザーの運用負荷軽減に大きく寄与することができます。