助け合いフォーラム
AWS ソリューションアーキテクト - アソシエイト(SAA-C02)
問題ID : 24482
問題を開く
アプリケーションの利用状況を監視するため、リクエスト数やリクエストの応答時間がしきい値を超えたら管理者宛にメールで通知されるようにしたい。
要件を満たすために最適のアプローチはどれか。
要件を満たすために最適のアプローチはどれか。
正解
Amazon CloudWatchで必要なメトリクスを監視対象に設定し、メール通知されるよう設定する
解説
Amazon CloudWatchは、AWSサービスやオンプレミス(自社運用)のシステムを監視し、運用を支援するサービスです。ある一定の値を超える・下回るなどした場合に管理者に通報するなど、サービスのリソース(CPU使用率やストレージの使用状況など)の状態に応じたアクションを取らせることができます。
CloudWatchが監視する様々なリソースの情報は「メトリクス」と呼ばれます。インスタンスのCPU使用率やディスクの使用状況(読み取り・書き込みの量)など、予め定義されているメトリクスを標準メトリクスと呼びます。標準メトリクスはサービスごとに提供されています。
例)
【EC2】CPU使用率、ディスクの読み取り・書き込み量
【ELB】リクエスト数、リクエストの応答時間
設問のケースではアプリケーションが受けるリクエスト数とリクエストの応答時間が監視対象になります。リクエスト数とリクエストの応答時間は、それぞれELBのメトリクスRequestCountとLatencyに対応しています。
CloudWatchのメトリクスとしてRequestCountとLatencyを監視対象に加え、それぞれにしきい値を定義しメール通知の設定を行うことで、設問の要件を満たすことができます。
以上より正解は
・Amazon CloudWatchで必要なメトリクスを監視対象に設定し、メール通知されるよう設定する
です。
実際の設定画面は以下の通りです。
その他の選択肢については以下の通りです。
・Amazon CloudWatch Logs Insightsでアプリケーションのログを解析し、メール通知の設定を行う
CloudWatch Logs Insightsはログの解析を行うサービスです。設問の要件はログの解析を必要としないため、CloudWatch Logs Insightsは適していません。
・EC2インスタンスへCloudWatchエージェントをインストールする
CloudWatchエージェントは、EC2インスタンスのログやカスタムメトリクスを収集する場合にインストールします。
リクエスト数やリクエストの応答時間はELBの標準メトリクスで収集できます。CloudWatchエージェントをインストールする必要はないため誤りです。
・EC2インスタンスのダッシュボードからインスタンスの詳細情報を監視する
EC2インスタンスのダッシュボードを参照してもアプリケーションが何件リクエストを受け取ったかはわかりませんので誤りです。
CloudWatchが監視する様々なリソースの情報は「メトリクス」と呼ばれます。インスタンスのCPU使用率やディスクの使用状況(読み取り・書き込みの量)など、予め定義されているメトリクスを標準メトリクスと呼びます。標準メトリクスはサービスごとに提供されています。
例)
【EC2】CPU使用率、ディスクの読み取り・書き込み量
【ELB】リクエスト数、リクエストの応答時間
設問のケースではアプリケーションが受けるリクエスト数とリクエストの応答時間が監視対象になります。リクエスト数とリクエストの応答時間は、それぞれELBのメトリクスRequestCountとLatencyに対応しています。
CloudWatchのメトリクスとしてRequestCountとLatencyを監視対象に加え、それぞれにしきい値を定義しメール通知の設定を行うことで、設問の要件を満たすことができます。
以上より正解は
・Amazon CloudWatchで必要なメトリクスを監視対象に設定し、メール通知されるよう設定する
です。
実際の設定画面は以下の通りです。
その他の選択肢については以下の通りです。
・Amazon CloudWatch Logs Insightsでアプリケーションのログを解析し、メール通知の設定を行う
CloudWatch Logs Insightsはログの解析を行うサービスです。設問の要件はログの解析を必要としないため、CloudWatch Logs Insightsは適していません。
・EC2インスタンスへCloudWatchエージェントをインストールする
CloudWatchエージェントは、EC2インスタンスのログやカスタムメトリクスを収集する場合にインストールします。
リクエスト数やリクエストの応答時間はELBの標準メトリクスで収集できます。CloudWatchエージェントをインストールする必要はないため誤りです。
・EC2インスタンスのダッシュボードからインスタンスの詳細情報を監視する
EC2インスタンスのダッシュボードを参照してもアプリケーションが何件リクエストを受け取ったかはわかりませんので誤りです。
参考
【Amazon CloudWatch】
サービスを継続して運用するために、管理者は例えばストレージがすべて使い切られる前に余剰を確保しておいたり、負荷が高くなり機能不全に陥る前に追加のリソースを用意したりと、状況に応じた適切な処置を行う必要があります。
Amazon CloudWatchは、AWSサービスやオンプレミス(自社運用)のシステムを監視し、しきい値(境界値)を超える・下回るなどした場合に管理者に通報するなど、サービスのリソース(CPU使用率やストレージの使用状況など)の状態に応じたアクションを取らせることができます。管理者はCloudWatchを利用することにより、サービスの安定した運用やパフォーマンスの向上、サービスの改善に役立てることができます。
●CloudWatchの機能
CloudWatchには「CloudWatch」「CloudWatch Logs」「CloudWatch Events」の3つの機能があります:
【CloudWatch】
CloudWatchが監視する様々なリソースの情報は「メトリクス」と呼ばれます。インスタンスのCPU使用率やディスクの使用状況(読み取り・書き込みの量)など、予め定義されているメトリクスを標準メトリクスと呼びます。標準メトリクスはサービスごとに提供されており、CloudWatchのダッシュボードから確認することができます。
以下は標準メトリクスとして監視可能な項目の例です(【】内がサービス名)。
【EC2】CPU使用率、ディスクの読み取り・書き込み量
【S3】バケットサイズ、ファイル(オブジェクト)数
【ELB】リクエスト数、リクエストの応答時間
【RDS】ストレージの空き容量、秒間の読み取り・書き込み操作の量
CloudWatchではこれらのメトリクスに対してアラームとアクションを設定できます。例えば「EC2インスタンスのCPU使用率が80%を超えたとき」というアラームに対して「管理者宛にメール通知」というアクションを設定すると、条件を満たしたときにアクションが実行されます。なお、メール通知はSNS(Simple Notification Service)というメッセージングサービスと連携して実現します。
EC2インスタンスについては、メール通知だけではなく、インスタンスの再起動・停止・終了・復旧というアクションも用意されています。例えば、必要な処理が完了したらインスタンスを停止・終了することでコストを削減できます。また、復旧アクションを選択すると、ハードウェア異常が発生した際に自動的に新たなインスタンスで復旧します。
なお、これらの監視間隔はデフォルトで5分です(基本モニタリング)。1分間隔で監視を行いたい場合は「詳細モニタリング」を有効にします。基本モニタリングは無料ですが詳細モニタリングは有料です。
●カスタムメトリクス
標準メトリクスとして用意されていない項目を監視したい場合、管理者は「カスタムメトリクス」を定義します。
例えばEC2インスタンスにおいて、CPU使用率やディスクの読み取り・書き込み量(bytes)などは標準メトリクスとして用意されていますが、メモリ使用量やディスクの空き容量(使用状況)に関する項目はありません。このような項目を監視したい場合、EC2インスタンスへ「CloudWatchエージェント」をインストールし、AWS CLIコマンドやAPIを用いて監視項目をCloudWatchへ送信します。
以下はEC2インスタンスの代表的な監視項目です。
【CloudWatch Logs】
CloudWatch LogsはAWSサービスやEC2インスタンスのOSやアプリケーションのログを収集し、一元管理するサービスです。例えば、CloudTrailにおけるAWSサービスの操作ログや、VPCフローログ(VPC利用時のIPトラフィック情報)などを収集することができます。収集したログは、メッセージの内容をフィルタリングして管理者に通知させることができます(例:EC2インスタンスのOSログで"Error"の文字列を1時間に5回検出した場合、管理者へメール通知する)。
なお、EC2インスタンス上のアプリケーションやOSのログを収集するには、対象のEC2インスタンスへ「CloudWatchエージェント」をインストールする必要があります。
更に、フィルタリングしたログをAmazon Kinesis(※1)やAWS Lambda(※2)などの別のサービスへ転送し、ログをリアルタイムに解析したり、ログの内容に応じてプログラムを実行させる、といった連携も可能です。
※1: Amazon Kinesis ... ストリーミングデータ(継続的に発生するデータ)やイベントログなどのリアルタイム分析が可能なAWSサービス。
※2: AWS Lambda ... サーバーレスでプログラムの実行が可能なAWSサービス。他サービスと連携でき、イベントが発生したタイミングでプログラムを起動させることができる。Lambdaで起動するコードをLambda関数(Lambda Function)と呼ぶ。
●CloudWatch Logs Insights
2018年に追加された機能で、収集したログのインタラクティブな検索や分析を行うことができます。CloudWatch Logsの管理コンソールでは単語検索によるフィルタリングを行えますが、CloudWatch Logs Insightsではクエリの実行にも対応しており、例えば「特定のアプリケーションが一定期間に出力した"Error"を含むメッセージをカウントする」など柔軟なログ解析が可能です。
【CloudWatch Events(Amazon EventBridge)】
CloudWatch Eventsは、AWS上のリソースの状態変化やスケジュールに応じてアクションを実行することができるサービスです。CloudWatch Eventsを利用すると、管理者は以下のような運用ができます:
・EC2インスタンスが起動状態(running)から停止状態(stopped)になったとき、再起動する
・毎日決まった時刻にアプリケーションのログを収集・圧縮するLambda関数を呼び出す
これらのイベントルールを定義する際、トリガーとなるものを「イベントソース」と呼び、行う処理のことを「ターゲット」と呼びます。
ターゲット(アクション)としては、既に定義されているAPI("EC2:RebootInstances"など)を呼び出したり、他サービスと連携したアクションをとることができます。特にLambda関数を使えばアクションを独自に定義することができますから、例えば毎日定時に決められたスクリプトを実行する、というルールを作成することも可能です。
また、CloudWatch Eventsは、AWS環境の脅威を検知するサービス「Amazon GuardDuty」と連携することもできます。脅威を検知した際に管理者宛にメール通報をさせたり、特定した脅威に対してアクションをとるLambda関数を定義して呼び出す、といった運用を行うことで、AWSサービスやAWSアカウントのセキュリティを高めることができます。
なお、CloudWatch Eventsは「Amazon EventBridge」というサービスになっています。EventBridgeはCloudWatch Eventsをベースに機能が追加されているため、CloudWatch EventsのAPIやルールなどは継続して利用できます。
サービスを継続して運用するために、管理者は例えばストレージがすべて使い切られる前に余剰を確保しておいたり、負荷が高くなり機能不全に陥る前に追加のリソースを用意したりと、状況に応じた適切な処置を行う必要があります。
Amazon CloudWatchは、AWSサービスやオンプレミス(自社運用)のシステムを監視し、しきい値(境界値)を超える・下回るなどした場合に管理者に通報するなど、サービスのリソース(CPU使用率やストレージの使用状況など)の状態に応じたアクションを取らせることができます。管理者はCloudWatchを利用することにより、サービスの安定した運用やパフォーマンスの向上、サービスの改善に役立てることができます。
●CloudWatchの機能
CloudWatchには「CloudWatch」「CloudWatch Logs」「CloudWatch Events」の3つの機能があります:
【CloudWatch】
CloudWatchが監視する様々なリソースの情報は「メトリクス」と呼ばれます。インスタンスのCPU使用率やディスクの使用状況(読み取り・書き込みの量)など、予め定義されているメトリクスを標準メトリクスと呼びます。標準メトリクスはサービスごとに提供されており、CloudWatchのダッシュボードから確認することができます。
以下は標準メトリクスとして監視可能な項目の例です(【】内がサービス名)。
【EC2】CPU使用率、ディスクの読み取り・書き込み量
【S3】バケットサイズ、ファイル(オブジェクト)数
【ELB】リクエスト数、リクエストの応答時間
【RDS】ストレージの空き容量、秒間の読み取り・書き込み操作の量
CloudWatchではこれらのメトリクスに対してアラームとアクションを設定できます。例えば「EC2インスタンスのCPU使用率が80%を超えたとき」というアラームに対して「管理者宛にメール通知」というアクションを設定すると、条件を満たしたときにアクションが実行されます。なお、メール通知はSNS(Simple Notification Service)というメッセージングサービスと連携して実現します。
EC2インスタンスについては、メール通知だけではなく、インスタンスの再起動・停止・終了・復旧というアクションも用意されています。例えば、必要な処理が完了したらインスタンスを停止・終了することでコストを削減できます。また、復旧アクションを選択すると、ハードウェア異常が発生した際に自動的に新たなインスタンスで復旧します。
なお、これらの監視間隔はデフォルトで5分です(基本モニタリング)。1分間隔で監視を行いたい場合は「詳細モニタリング」を有効にします。基本モニタリングは無料ですが詳細モニタリングは有料です。
●カスタムメトリクス
標準メトリクスとして用意されていない項目を監視したい場合、管理者は「カスタムメトリクス」を定義します。
例えばEC2インスタンスにおいて、CPU使用率やディスクの読み取り・書き込み量(bytes)などは標準メトリクスとして用意されていますが、メモリ使用量やディスクの空き容量(使用状況)に関する項目はありません。このような項目を監視したい場合、EC2インスタンスへ「CloudWatchエージェント」をインストールし、AWS CLIコマンドやAPIを用いて監視項目をCloudWatchへ送信します。
以下はEC2インスタンスの代表的な監視項目です。
【CloudWatch Logs】
CloudWatch LogsはAWSサービスやEC2インスタンスのOSやアプリケーションのログを収集し、一元管理するサービスです。例えば、CloudTrailにおけるAWSサービスの操作ログや、VPCフローログ(VPC利用時のIPトラフィック情報)などを収集することができます。収集したログは、メッセージの内容をフィルタリングして管理者に通知させることができます(例:EC2インスタンスのOSログで"Error"の文字列を1時間に5回検出した場合、管理者へメール通知する)。
なお、EC2インスタンス上のアプリケーションやOSのログを収集するには、対象のEC2インスタンスへ「CloudWatchエージェント」をインストールする必要があります。
更に、フィルタリングしたログをAmazon Kinesis(※1)やAWS Lambda(※2)などの別のサービスへ転送し、ログをリアルタイムに解析したり、ログの内容に応じてプログラムを実行させる、といった連携も可能です。
※1: Amazon Kinesis ... ストリーミングデータ(継続的に発生するデータ)やイベントログなどのリアルタイム分析が可能なAWSサービス。
※2: AWS Lambda ... サーバーレスでプログラムの実行が可能なAWSサービス。他サービスと連携でき、イベントが発生したタイミングでプログラムを起動させることができる。Lambdaで起動するコードをLambda関数(Lambda Function)と呼ぶ。
●CloudWatch Logs Insights
2018年に追加された機能で、収集したログのインタラクティブな検索や分析を行うことができます。CloudWatch Logsの管理コンソールでは単語検索によるフィルタリングを行えますが、CloudWatch Logs Insightsではクエリの実行にも対応しており、例えば「特定のアプリケーションが一定期間に出力した"Error"を含むメッセージをカウントする」など柔軟なログ解析が可能です。
【CloudWatch Events(Amazon EventBridge)】
CloudWatch Eventsは、AWS上のリソースの状態変化やスケジュールに応じてアクションを実行することができるサービスです。CloudWatch Eventsを利用すると、管理者は以下のような運用ができます:
・EC2インスタンスが起動状態(running)から停止状態(stopped)になったとき、再起動する
・毎日決まった時刻にアプリケーションのログを収集・圧縮するLambda関数を呼び出す
これらのイベントルールを定義する際、トリガーとなるものを「イベントソース」と呼び、行う処理のことを「ターゲット」と呼びます。
ターゲット(アクション)としては、既に定義されているAPI("EC2:RebootInstances"など)を呼び出したり、他サービスと連携したアクションをとることができます。特にLambda関数を使えばアクションを独自に定義することができますから、例えば毎日定時に決められたスクリプトを実行する、というルールを作成することも可能です。
また、CloudWatch Eventsは、AWS環境の脅威を検知するサービス「Amazon GuardDuty」と連携することもできます。脅威を検知した際に管理者宛にメール通報をさせたり、特定した脅威に対してアクションをとるLambda関数を定義して呼び出す、といった運用を行うことで、AWSサービスやAWSアカウントのセキュリティを高めることができます。
なお、CloudWatch Eventsは「Amazon EventBridge」というサービスになっています。EventBridgeはCloudWatch Eventsをベースに機能が追加されているため、CloudWatch EventsのAPIやルールなどは継続して利用できます。
CloudWatchエージェント
投稿日 2022/08/25
解説に以下の記載があります。
CloudWatchエージェントは、カスタムメトリクスを取得する際に必要というふうに覚えたのですが、
CloudWatch Logsにのみ使用するのでしょうか。
誤解を招く解説かと思いました。(間違っていたらすいません。)
>・EC2インスタンスへCloudWatchエージェントをインストールする
>CloudWatchエージェントはCloudWatch Logsを利用する際にEC2インスタンスへインストールするものです。
>本設問はCloudWatch Logsを利用するケースではありませんので、CloudWatchエージェントをインストールする必要はありません。
スタッフからの返信
この投稿に対して返信しませんか?
s staff_satomi
2022/08/26 14:46
kaoru1999様 ご指摘の点を修正いたしました。 ご報告下さり、誠にありがとうございます。