CloudWatch・CloudTrail・Config

Amazon CloudWatch・AWS CloudTrail・AWS Config は、どれも「AWS の中で起きていることを見える化する」サービスですが、見ているものが違います。SAA では、問題文の要件(性能を監視したい/誰が操作したか知りたい/設定がルールに合っているか調べたい)から正しいサービスを選べるかが問われます。

ひとことで言うと: CloudWatch は「体調の計測器」、CloudTrail は「操作の記録係」、Config は「設定の点検係」です。

たとえるなら、ビルの管理で、CloudWatch は各部屋の温度計と警報ベル、CloudTrail は入館記録と監視カメラ(誰がいつ何をしたか)、Config は「消火器が決まった場所にあるか」を点検して、変わった履歴を台帳に残す係です。

このページで押さえる論点

3 つのサービスの役割の違い

3 つとも「記録する」「見える化する」サービスなので、名前だけで覚えると混ざります。何を見ているかで区別しましょう。

サービス見ているもの答えられる質問の例
Amazon CloudWatchリソースやアプリの性能・状態(メトリクス=数値の時系列データ)とログ「CPU 使用率は今何 % か」「エラーが急に増えていないか」
AWS CloudTrailAWS への操作(API 呼び出し)の記録「誰が、いつ、どこから、このセキュリティグループを変更したか」
AWS Configリソースの設定とその変更履歴、ルールへの準拠状況「このセキュリティグループの設定は先週どうだったか」「暗号化されていない EBS ボリュームはどれか」

API とは、AWS を操作するための窓口のことです。マネジメントコンソールでボタンを押しても、AWS CLI でコマンドを打っても、裏では API が呼ばれます。CloudTrail はこの API 呼び出しを記録するので、画面から行った操作もコマンドから行った操作も残ります。

1 つの出来事を 3 つのサービスがどう見るかを、下の図で確かめてみましょう。

再生型アニメ図解

1 つの設定変更を 3 つのサービスはどう見るか

管理者 セキュリティG CloudTrail AWS Config CloudWatch

※簡略化しています: 3 つのサービスが同時に動く様子を順番に見せています。実際は各サービスが別々に記録するため、反映されるまでの時間はサービスごとに異なります。Config ルールや自動修復は、あらかじめ設定しておいた場合だけ動きます。

CloudWatch メトリクス

メトリクスとは、「CPU 使用率」「ネットワーク受信量」のように、時間とともに変わる数値を一定間隔で記録したものです。1 つ 1 つの記録をデータポイントと呼びます。多くの AWS サービスは、何も設定しなくても CloudWatch にメトリクスを送ります。

基本モニタリングと詳細モニタリング(EC2)

種類間隔料金
基本モニタリング(既定)5 分間隔(ステータスチェックは 1 分間隔)かからない
詳細モニタリング(有効化が必要)1 分間隔かかる

「負荷の変化にすばやく反応して Auto Scaling させたい」という要件なら、5 分待たずに変化をつかめる詳細モニタリングが候補になります。

標準では取れないメトリクスと CloudWatch エージェント

EC2 の標準メトリクスは、AWS がサーバーの外側から測れるもの(CPU 使用率、ネットワーク、ディスクの読み書き回数など)です。メモリ使用率やディスクの空き容量のように、OS の内側でしかわからない値は含まれません。これらを集めるには、インスタンスに CloudWatch エージェント(情報を集めて送るソフトウェア)を入れます。エージェントはアプリのログファイルを CloudWatch Logs に送ることもでき、オンプレミスのサーバーにも入れられます。

カスタムメトリクスと保存期間

アプリが自分で数値(例: ログイン中のユーザー数)を送ることもでき、これをカスタムメトリクスと呼びます。1 分より細かい間隔(最短 1 秒)で送るものは高解像度メトリクスです。

メトリクスは、時間がたつほど粗い間隔にまとめられて保存されます。

データポイントの間隔使える期間
60 秒未満(高解像度)3 時間
60 秒(1 分)15 日
300 秒(5 分)63 日
3,600 秒(1 時間)455 日(15 か月)

つまりメトリクスは 15 か月で消えます。それより長く保管したい、または自由に分析したい場合は、メトリクスやログを S3 などへ出力しておく設計にします。

CloudWatch アラーム

アラームは、1 つのメトリクスを見張って、しきい値を超えたら何かを実行する仕組みです。アラームには次の 3 つの状態があります。

状態意味
OKしきい値の範囲内
ALARMしきい値を超えている
INSUFFICIENT_DATAデータが足りず判断できない(アラームを作った直後や、メトリクスが届いていないとき)

判定には「評価期間(直近いくつのデータポイントを見るか = N)」と「アラームを実行するデータポイント(そのうちいくつ超えたら ALARM にするか = M)」を使います。「3 個中 2 個」のように決めておくと、一瞬の跳ね上がりで警報が鳴るのを防げます。データが届かなかったとき(欠落)の扱いも選べます。下のシミュレーターで試してみましょう。

操作できるシミュレーター

データポイントを変えてアラームの状態を見てみよう

EC2 の CPU 使用率に「80% を超えたら」というアラームを設定しました。直近 3 個のデータポイント(N = 3)を見て判定します。

しきい値 80% 1 つ目 2 つ目 3 つ目
データポイント(CPU 使用率)
アラームの設定

※簡略化しています: 欠落データを missing にしたとき、実際の CloudWatch は評価期間より前のデータポイントもさかのぼって判定に使うことがありますが、ここでは直近 3 個だけで判定しています。欠落の扱いには ignore(現在の状態を維持)もありますが省いています。

ALARM や OK に状態が変わったときに実行できる主なアクションは次のとおりです。

アクションは状態が変わった時点で 1 回だけ実行され、ALARM が何時間続いても繰り返されません(Auto Scaling のアクションを除く)。複数のアラームを「A かつ B」のように組み合わせる複合アラームを使うと、関連する警報をまとめて通知の数を減らせます。

CloudWatch Logs と EventBridge

CloudWatch Logs は、アプリや AWS サービスのログ(出来事を文字で書いた記録)を集めて保管するサービスです。ログはロググループ(アプリごとなどのまとまり)単位で管理します。

Amazon EventBridge(旧 CloudWatch Events)は、「EC2 インスタンスが停止した」「決まった時刻になった」などのイベントを受け取り、ルールに合うものを Lambda や SNS などへ届けるサービスです。「状態の変化をきっかけに自動で処理する」「毎日決まった時刻に処理を動かす」という要件で使います。CloudTrail が記録した API 呼び出しもイベントとして受け取れるので、「特定の操作が行われたらすぐ通知する」仕組みも作れます。

AWS CloudTrail

CloudTrail は、AWS アカウントで行われた操作(API 呼び出し)をイベントとして記録します。イベントには「誰が(どの IAM ユーザー・ロールが)」「いつ」「どこから(送信元 IP アドレス)」「何をしたか」「成功したか」が含まれます。セキュリティ調査や監査(規則どおりに運用されているかの確認)の基本になるサービスです。

イベント履歴と証跡

方法記録されるもの保存期間・保存先
イベント履歴(設定不要)管理イベントリージョンごとに過去 90 日分をコンソールで表示・検索できる
証跡(トレイル)管理イベント(既定)。データイベント・Insights イベントは追加で設定指定した S3 バケットにログファイルを配信し、自分で決めた期間保管できる。CloudWatch Logs にも送れる

「90 日より前の操作も調べたい」「監査のために何年も保管したい」という要件では、証跡を作って S3 に保管します。S3 のライフサイクルルールで古いログを安いストレージクラスに移せば、保管コストも抑えられます。

管理イベントとデータイベント

管理イベントは、リソースそのものに対する操作(EC2 インスタンスの作成、セキュリティグループの変更、IAM ポリシーの変更など)です。データイベントは、リソースの中身に対する操作(S3 のオブジェクトの読み取り・書き込み、Lambda 関数の実行など)で、件数が非常に多くなるため、既定では記録されません。「S3 のどのファイルを誰が読んだか記録したい」なら、証跡でデータイベントの記録を有効にします(追加料金がかかります)。

ログを守る・まとめる・異常に気づく

AWS Config

AWS Config は、AWS リソースの設定を記録し続け、設定が変わるたびに履歴を残すサービスです。「このセキュリティグループには、先月の時点でどんなルールがあったか」「このリソースはほかのどのリソースとつながっているか」を後から確認できます。CloudTrail が「操作」を記録するのに対し、Config は「その結果どういう設定になったか」を記録します。

Config ルールと適合パック

Config ルールは、リソースの設定が望ましい状態かを自動で評価するものです。結果は「準拠(COMPLIANT)」か「非準拠(NONCOMPLIANT)」で表示されます。

Config ルールは「見つけて知らせる」ものです。IAM ポリシーのように操作そのものを止める(拒否する)ことはできません。設定変更を禁止したいなら、IAM ポリシーや SCP(組織のアカウントに付ける権限の上限)で拒否します。

自動修復とアグリゲーター

非準拠になったリソースには、修復アクションを設定できます。修復には Systems Manager の Automation ドキュメント(手順を定義したもの)を使い、「公開された S3 バケットを非公開に戻す」などを自動で実行できます。

アグリゲーターを使うと、複数のアカウント・複数のリージョン(AWS Organizations の組織全体も可)の設定と準拠状況を 1 か所に集めて確認できます。

ワークロードの可視性と監視するメトリクスの選び方

試験ガイドには「ワークロードの可視性(AWS X-Ray など)」と「ビジネス要件に基づいてメトリクスを特定する」が含まれています。

AWS X-Ray は、1 つのリクエストが API Gateway → Lambda → DynamoDB のように複数のサービスを通るとき、その経路と各区間の処理時間をトレース(追跡記録)として表示するサービスです。マイクロサービス(小さなサービスを組み合わせた構成)で「どこで遅くなっているか」「どこでエラーが出ているか」を探すときに使います。CloudWatch のメトリクスが「全体として遅い」ことを教えてくれるのに対し、X-Ray は「どの区間が遅いか」を教えてくれます。

何を監視するかは、要件から決めます。

要件見るメトリクスの例
Web アプリの応答を一定の速さに保ちたいALB の TargetResponseTime(応答時間)、HTTP 5xx エラー数
アクセスに合わせて EC2 の台数を増減したいAuto Scaling グループの平均 CPU 使用率、ターゲットあたりのリクエスト数
キューの処理が遅れていないか知りたいSQS の ApproximateNumberOfMessagesVisible(キューに溜まっているメッセージ数)
サーバーのメモリ不足に気づきたいCloudWatch エージェントで集めるメモリ使用率

問題文のキーワード → 選ぶべき答え

問題文によく出る言い回し選ぶべき答えと理由
「CPU 使用率が高くなったら通知」「しきい値を超えたら」CloudWatch アラーム + Amazon SNS
「EC2 のメモリ使用率・ディスク空き容量を監視」CloudWatch エージェント。標準メトリクスには含まれない
「1 分間隔で監視」「すばやくスケール」EC2 の詳細モニタリング
「ログの中のエラーの件数でアラーム」CloudWatch Logs のメトリクスフィルター + アラーム
「ログをリアルタイムに別サービスへ流して処理」CloudWatch Logs のサブスクリプションフィルター
「誰がリソースを削除したか」「API 呼び出しを監査」CloudTrail
「90 日より前の操作履歴」「操作ログを長期保管」CloudTrail の証跡で S3 に保管
「S3 オブジェクトへのアクセスを記録」CloudTrail のデータイベント(既定では記録されない)
「ログが改ざんされていないことを証明」CloudTrail のログファイルの整合性の検証
「組織の全アカウントの操作を記録」CloudTrail の組織の証跡
「設定の変更履歴」「ある時点の設定を確認」AWS Config
「暗号化されていないボリュームを検出」「設定がルールに準拠しているか」Config ルール(直すところまで自動化するなら修復アクション)
「複数アカウント・リージョンの準拠状況を 1 か所で確認」Config のアグリゲーター
「マイクロサービスのどこで遅延しているか」AWS X-Ray
「インスタンスが停止したら自動で処理」「毎日決まった時刻に実行」Amazon EventBridge のルール

引っかけポイント

まとめ: SAA 試験で押さえるポイント

確認問題

参考リンク

AWS 公式ドキュメント(外部サイトが開きます)。