COLUMN誰でもわかる!お役立ちコラム

AWS活用支援コラム

AWSシステム監視の手法

AWS (Amazon Web Services)のようなクラウドサービスにおいてもサービス安定稼働のためのシステム監視は非常に重要ですが、AWSのシステム監視はどのような利用方法があるのでしょうか。本記事ではAWSにおける監視サービスであるCloudWatchとその機能に関してわかりやすく解説していきます。

CloudWatchにおける監視

AWSの監視サービスであるCloudWatchにおける監視は大きく以下の2種類があります。
・メトリクス監視
・ログ監視
メトリクス監視はAWSサービスのリソースやパフォーマンスに関するデータの監視を行います。基本的な機能はエージェントをインストールする必要なくAWS側で自動実装されています。
ログ監視についてはオンプレミスの環境ではログを受信するためのログサーバが必要ですが、AWSではCloudWatch Logsという機能を使うことで、ログサーバを構築することなく、OS、アプリケーションログ、 AWSマネージドサービスログの監視を行うことができます。

AWSでは大きくメトリクス監視、ログ監視という監視手法がありますが、これら2種の監視手法についてそれぞれの特性、ユースケースについて次項より説明します。

メトリクス監視

メトリクス監視とはどのようなものなのかについてですが、まずメトリクスとはAWSの各種サービスから定期的に出力される監視用のデータとなり、このデータを用いて用いて各サービスの死活監視/ 性能監視/ キャパシティ監視を実現しています。

イメージとしては心拍数のような健康状態を示す値をスマートフォンに定期的に送ることにより健康状態を把握するようなものと考えるとわかりやすいと思います。
メトリクス監視はEC2(Amazon Elastic Compute Cloud)のようなアンマネージドサービスだけでなくRDS(Amazon Relational Database Service)のようなマネージドサービスでの監視も行うことができAWSサービスの統計情報を網羅的に取得することができます。

標準メトリクスとカスタムメトリクス

メトリクスには標準メトリクスとカスタムメトリクスの2種類があります。下図のように標準メトリクスはCPU使用率、ディスクI/O、ネットワーク利用量、死活監視といったデータの取得。カスタムメトリクスはメモリ使用率、ディスク使用率、プロセス監視、ロードアベレージといったデータの取得が可能です。

ただしカスタムメトリクスは若干利用料がかかる点と、値を取得するための設定が必要となる点に注意が必要となります。

push型なのでオートスケールに対応

一般的な監視サーバによる監視では監視サーバから情報を取得する(Pull型)が使われるか、クライアントとの相互で通信することで監視を行っています。一方メトリクスのやり取りはクライアント(AWSサービス)からサーバへ出力されるpush型です。
push型であることにより監視サーバ側の設定を行わない形でもメトリクスを受け取ることができるため、オートスケールのような自動で拡張する機能を実装しても新しく追加されたサーバの監視を自動的に行うことができます。

メトリクス監視の注意点

メトリクス監視には以下の注意点があります。
■基本モニタリングと詳細モニタリング
メトリクスによるモニタリングには基本モニタリングと詳細モニタリングがありそれぞれモニタリング間隔が異なります。

■メトリクスデータの保管
メトリクスデータの保管期間は最大で約15ヶ月となり測定間隔によって保管期間が異なります。

  •  1 分ごとのデータポイント は15 日間保存
  •  5 分ごとのデータポイント 63 日間保存
  •  1 時間ごとのデータポイント 455 日間保存

上記保管期間を超過して保存したい場合はS3等のAWSストレージサービスに保管することができます。データの保管粒度は最短で1分間隔となります。

AWSに最適化された24時間365日の運用・監視をご提供するスタイルズのAWS監視、運用・保守サービスはこちら→

ログ監視

AWSシステム監視においてメトリクス監視以外で重要な監視手法がログ監視となります。メトリクスでは取得できない対象やログ監視ならではの特性がありシステム監視を検討する際に検討が必要な要素がありますので次項より解説していきます。

まずログって?

ログとはOS、ミドルウェア、アプリケーション等、各種システムで生成されるイベントの記録のことをいいます。ログ出力の設定内容によって形式は異なりますが、特定のエラーを出力することもできれば、特定の間隔でシステムの稼働状況を出力することもできます。

このため障害が発生した際にはこれらのログを確認することで、発生した障害の事象解析や原因特定におおいに役立ちます。通常はログの出力先としてログサーバを構築する必要がありますが、AWSではCloudWatch Logsサービスを利用することでログサーバを構築せずにログの受信およびログに関する各種機能を利用することができます。

CloudWatch Logs

それではCloudWatch Logsがどのようなサービスなのかについてここからは解説します。CloudWatch LogsはAWSサービスおよび顧客システムのログの監視、保存、アクセスを提供します。システム上の各種ログメッセージをCloudWatchに転送することで他のAWSサービスと連携し、アラートのメール通知等logの内容によって他のサービスを動作させるといったことが可能となります。

CloudWatchの主な機能としてはログの収集、ログの蓄積、ログのモニタ、ログの分析といった機能が挙げられます。

-CloudWatch Logsの機能- ログの収集

CloudWatch LogsではOS・ミドルウェア・アプリケーションの任意のログ収集が可能となっています。メトリクスでこれらOS・ミドルウェア・アプリケーションの情報を得る場合はカスタムメトリクスによる作りこみが必要となりますが、CloudWatch LogsではOS・ミドルウェア・アプリケーション側で実装されているlogの形式でオンプレミス利用時と同様に収集することができます。

この点はオンプレミスからAWSへ移行する際にログ監視に関する設計を容易に引き継ぐことができるため、CloudWatch Logs利用の大きな利点と言えます。

-CloudWatch Logsの機能- ログの蓄積

CloudWatch Logsのログの蓄積には以下の特徴があります。
・蓄積は容量無制限で行うことができます。(5G以上は有料)
・ログの蓄積期間は1日から永久で任意の期間が指定可能です。
・ログをS3(Amazon Simple Storage Service)にエクスポート可能
容量制限がないことからオンプレミスで発生しがちな、ログの容量不足によるディスク領域不足といった心配がなくなり、安価なAmazon S3 Glacierのようなストレージサービスに古いログを退避することでコストをかけずに長期間、大量のログ保管が実現可能となります。

-CloudWatch Logsの機能- ログのモニタ

CloudWatch Logsで収集したログはAWSコンソール上から表示することができます。表示される内容としてはログのタイムスタンプとログメッセージが表示され、表示のカスタマイズや検索もこのコンソール上で可能です。

-CloudWatch Logsの機能- ログの分析

CloudWatch Logsで収集したログの分析はCloudWatch Logs Insights という機能を利用して実現可能です。以下の例のようなクエリを用いて特定のログの抽出、グラフ化が可能となり、これらを利用して障害やステータス変化の傾向を明確することができます。

CloudWatch エージェント

CloudWatch Logsにログを送るためにエージェント(ソフトウェアモジュール)が必要となります。現在AWSで提供されているエージェントは

  • 統合 CloudWatchエージェント
  • CloudWatch Logsエージェント

の2種となりますが、CloudWatch LogsエージェントはAWSより提供終了がアナウンスされておりますので統合 CloudWatchエージェントの利用をおすすめします。統合 CloudWatchエージェントはlogの出力だけでなくカスタムメトリクスの設定も行うことができます。

メトリクスとログの使い分け

メトリクスは統計情報であり、定期的にデータを受信できる点からCPUやメモリ等のリソースやパフォーマンス測定に向いています。一方ログはエラーやステータス出力の確認がメインで、OSやミドルウェア、アプリケーション等のメトリクスでは取得できない状態検知が可能です。このようにメトリクスとログにはそれぞれ特性があるため、まずは監視の要件を定めてどのようにどこまで監視が必要なのかに応じて必要な監視手段を選択することが大切です。