SAA CloudWatch / X-Ray 設計パターン|監視・トレーシング4選と要件別の選択基準
AWS SAA-C03 でモニタリングは「どのメトリクスが自動収集されるか」「X-Ray はいつ使うか」が頻出。CloudWatch メトリクス(デフォルト vs CloudWatch Agent)・Alarms・Logs Insights・Container Insights・X-Ray の5機能を設計パターン4選に整理。EC2 のメモリ使用率はエージェント必須、分散トレーシングは X-Ray、ログ分析は Logs Insights という要件キーワード即断マップを完備。
CloudWatch の問題で「EC2 のメモリ使用率が監視できない」は試験の定番ひっかけだ。 AWS SAA-C03 でモニタリングは、配点26%の「高パフォーマンスなアーキテクチャ」と「セキュアなアーキテクチャ」にまたがって出題される。攻略の核心は、「どのメトリクスが自動収集されるか(デフォルト vs CloudWatch Agent)」「ログはどのツールで分析するか(Logs Insights / Subscription Filter)」「分散トレーシングが必要かどうか(X-Ray)」の3軸で設計を決めることだ。本記事では、SAA-C03 頻出の監視設計パターン4選を要件キーワードから即断できる粒度で解説する。読み終えればモニタリング問題をパターンマッチで解けるようになる。
※ 本記事はアフィリエイト広告(Amazon アソシエイト等)を含みます
📑 目次
- 結論:監視設計は「収集 × 分析 × トレーシング」の3軸で決まる
- CloudWatch の基本構造(Metrics / Alarms / Logs / Dashboards)
- デフォルトメトリクス vs CloudWatch Agent(カスタムメトリクス)
- CloudWatch Alarms の設計(SNS・Auto Scaling・Composite Alarm)
- CloudWatch Logs の設計(Log Groups・Subscription Filter・Logs Insights)
- AWS X-Ray の基本構造(トレース・セグメント・サービスマップ)
- パターン1:基本アラーム監視(メトリクス→Alarm→SNS→通知/修復)
- パターン2:ログ集約・リアルタイム分析(Logs Insights / Subscription Filter)
- パターン3:分散トレーシング(X-Ray)
- パターン4:コンテナ監視(Container Insights)
- 要件キーワード早見表
- 頻出ひっかけパターンと正しい打ち手
- 次のアクション チェックリスト
- 関連記事
- 関連サイト
1. 結論:監視設計は「収集 × 分析 × トレーシング」の3軸で決まる
SAA-C03 のモニタリング問題を最短で解く骨格は、「どのデータをどのツールで収集し、どう分析・追跡するか」を3軸で独立して判断することだ。
| 軸 | 問いかけ | 判断のキーワード |
|---|---|---|
| 収集 | デフォルトで取れるか?カスタムが必要か? | 「メモリ」「ディスク」→ CloudWatch Agent 必須 |
| 分析 | ログを検索・可視化するか?閾値で通知するか? | 「ログクエリ」→ Logs Insights、「閾値超過で通知」→ Alarms + SNS |
| トレーシング | マイクロサービス間の遅延・ボトルネックを追うか? | 「分散トレース」「ボトルネック特定」→ X-Ray |
3軸を整理するだけで、SAA のモニタリング問題は4パターンに絞れる。「監視 = CloudWatch だけ」という思い込みを捨て、X-Ray・Container Insights・Logs Insights を用途別に使い分けることが正解への近道だ。
2. CloudWatch の基本構造(Metrics / Alarms / Logs / Dashboards)
Amazon CloudWatch は AWS の統合モニタリングサービスだ。4つの主要コンポーネントで構成される。
- Metrics(メトリクス):EC2・RDS・Lambda など AWS サービスが自動送信する時系列データ。名前空間(Namespace)・ディメンション(Dimension)で分類される。デフォルト収集間隔は1分(詳細モニタリングで1秒〜)。
- Alarms(アラーム):メトリクスが設定した閾値を超えた際にアクションを実行。状態は
OK / ALARM / INSUFFICIENT_DATAの3種。アクションとして SNS 通知・EC2 アクション・Auto Scaling ポリシー実行が可能。 - Logs(ログ):アプリケーション・AWS サービスのログを集約・保存・検索。Log Group → Log Stream の階層構造。保持期間は1日〜永久まで設定可能。
- Dashboards(ダッシュボード):複数メトリクスを1画面に集約。クロスリージョン・クロスアカウントの統合ビューも構築可能。
3. デフォルトメトリクス vs CloudWatch Agent(カスタムメトリクス)
SAA で最も頻出なのが**「何がデフォルトで収集され、何はエージェントが必要か」**の問題だ。
EC2 デフォルトメトリクス(エージェント不要)
| メトリクス | 収集方法 |
|---|---|
| CPUUtilization(CPU使用率) | ✅ デフォルト自動収集 |
| NetworkIn / NetworkOut(ネットワーク) | ✅ デフォルト自動収集 |
| DiskReadOps / DiskWriteOps(I/O 回数) | ✅ デフォルト自動収集 |
| StatusCheckFailed(ステータスチェック) | ✅ デフォルト自動収集 |
| MemoryUtilization(メモリ使用率) | ❌ エージェント必須 |
| DiskSpaceUtilization(ディスク使用率) | ❌ エージェント必須 |
CloudWatch Agent の役割
CloudWatch Agent(旧 CloudWatch Monitoring Scripts)は EC2 にインストールするソフトウェアで、以下を実現する。
- カスタムメトリクスの送信:メモリ・ディスク・プロセス数などをカスタム名前空間(
CWAgent)に送信 - ログの収集と転送:アプリログ・システムログを CloudWatch Logs に送信
- 収集間隔の細粒度制御:デフォルト1分を秒単位まで細かく設定可能
- オンプレミス対応:EC2 以外の物理サーバー・VM にもインストール可能
4. CloudWatch Alarms の設計(SNS・Auto Scaling・Composite Alarm)
CloudWatch Alarms はメトリクスの閾値監視と自動アクションの核心だ。
アラームのアクション種別
| アクション | ユースケース |
|---|---|
| SNS 通知 | Eメール通知・SMS・Lambda 呼び出しの起点 |
| EC2 アクション | 停止・終了・再起動・リカバリ(インスタンス障害時) |
| Auto Scaling アクション | スケールアウト(インスタンス追加)/スケールイン(削減)のトリガー |
| Systems Manager | Automation ランブックの実行(自動修復) |
Composite Alarm(複合アラーム)
Composite Alarm は複数のアラームを AND / OR 条件で組み合わせる機能だ。
例:
Composite Alarm = CPU_High (ALARM) AND MemoryHigh (ALARM)
→ 両方が ALARM 状態のときだけ SNS 通知を発火
→ どちらか一方だけでは通知しない(誤検知を減らす)
5. CloudWatch Logs の設計(Log Groups・Subscription Filter・Logs Insights)
CloudWatch Logs はログデータの集約・保存・分析基盤だ。
基本構造
CloudWatch Logs
└── Log Group(アプリ・サービスごとに作成)
└── Log Stream(EC2 インスタンス1台ごと / タスクごと)
└── Log Events(タイムスタンプ付きログレコード)
Metric Filter(ログからメトリクスを作成)
Metric Filter はログのテキストパターンに一致するイベント数をカウントしてメトリクス化する機能だ。
例:Log Group のログに "ERROR" が出るたびカウント
→ "ErrorCount" メトリクスとして記録
→ CloudWatch Alarm で 5分間に10件超えたら SNS 通知
Subscription Filter(リアルタイム転送)
Subscription Filter はログをリアルタイムで別サービスに転送する機能だ。
| 転送先 | ユースケース |
|---|---|
| Lambda | リアルタイムログ処理・Slack 通知・エラー自動修復 |
| Kinesis Data Firehose | S3 へのアーカイブ・Redshift / OpenSearch へのストリーミング |
| Kinesis Data Streams | 複数コンシューマーへのファンアウト処理 |
| OpenSearch Service | 全文検索・Kibana ダッシュボードでの可視化 |
CloudWatch Logs Insights
Logs Insights はログデータに対するインタラクティブなクエリ分析サービスだ。SQL ライクな専用クエリ言語を使い、数十億件のログを数秒〜数分で検索できる。
例クエリ(Lambda のエラーを直近1時間で集計):
fields @timestamp, @message, @requestId
| filter @message like /ERROR/
| stats count() as errorCount by bin(5m)
| sort errorCount desc
6. AWS X-Ray の基本構造(トレース・セグメント・サービスマップ)
AWS X-Ray は分散アプリケーションのリクエストをエンドツーエンドでトレーシングするサービスだ。マイクロサービス間の遅延・エラー・ボトルネックを可視化する。
主要概念
- Trace(トレース):1つのリクエストが複数サービスを通過する全体の記録。一意の Trace ID で識別。
- Segment(セグメント):各サービス(Lambda 関数・EC2 アプリ・RDS など)が記録する処理の単位。
- Subsegment(サブセグメント):セグメント内の処理の詳細(SQL クエリ・外部 HTTP 呼び出し・カスタム処理ブロック)。
- Annotation(アノテーション):インデックス化され検索・フィルタに使えるキーバリュータグ(例:userId・orderId)。
- Metadata(メタデータ):インデックス化されない任意のデータ(デバッグ情報など)。
- Service Map(サービスマップ):トレースデータを元に生成される依存関係グラフ。遅延・エラー率が一目でわかる。
X-Ray デーモン
EC2・ECS・オンプレ環境では、X-Ray デーモン(サイドカープロセス)をインストールする必要がある。アプリ SDK からのトレースデータを受け取り、X-Ray サービスに送信する役割を担う。Lambda では自動統合のためデーモン不要。
7. パターン1:基本アラーム監視(メトリクス→Alarm→SNS→通知/修復)
要件のキーワード
- 「EC2 の CPU 使用率が 80% を超えたら自動でスケールアウトしたい」
- 「RDS のコネクション数が閾値超過したら エンジニアにメールで通知したい」
- 「EC2 インスタンスの障害を検知して自動でリカバリしたい」
アーキテクチャ
CloudWatch Metrics(CPUUtilization など)
↓ 閾値超過
CloudWatch Alarm(ALARM 状態へ遷移)
├─ SNS トピック → Lambda → Slack 通知 / 修復スクリプト実行
├─ Auto Scaling ポリシー → スケールアウト(EC2 追加)
└─ EC2 アクション → インスタンス再起動 / リカバリ
試験での正解条件
- 「通知だけでよい」→ Alarm + SNS(メール/SMS)
- 「検知して自動対応したい」→ Alarm + SNS → Lambda(修復処理)
- 「スケーリングのトリガーにしたい」→ Alarm + Auto Scaling ポリシー
8. パターン2:ログ集約・リアルタイム分析(Logs Insights / Subscription Filter)
要件のキーワード
- 「アプリの エラーログをリアルタイムで Lambda に転送して Slack 通知したい」
- 「過去1週間の API エラーレートをクエリで分析したい」
- 「ログを S3 に長期保存しつつ OpenSearch で全文検索したい」
アーキテクチャ(リアルタイム転送パターン)
EC2 / Lambda / ECS
↓ CloudWatch Agent / 自動統合
CloudWatch Logs(Log Group)
├─ Subscription Filter
│ ├─ → Lambda → エラー通知・自動修復
│ ├─ → Kinesis Firehose → S3(長期アーカイブ)
│ └─ → OpenSearch → Kibana で可視化
└─ Logs Insights(アドホッククエリ分析)
試験での正解条件
- 「ログから 特定パターンを検出して即時アクション」→ Subscription Filter + Lambda
- 「ログを S3 に全量アーカイブしたい」→ Subscription Filter + Kinesis Firehose + S3
- 「過去ログのアドホック分析」→ CloudWatch Logs Insights
9. パターン3:分散トレーシング(X-Ray)
要件のキーワード
- 「マイクロサービス間のレイテンシボトルネックを特定したい」
- 「API Gateway → Lambda → DynamoDB の どのステップで遅延が発生しているか調べたい」
- 「サービス間の依存関係グラフを可視化したい」
- 「特定のリクエストのエラー原因をトレースで追いたい」
アーキテクチャ
ユーザーリクエスト
↓
API Gateway(X-Ray トレース有効化)
↓ Trace ID を伝播
Lambda(Active Tracing ON)
↓ Trace ID を伝播
DynamoDB / RDS / 外部API(セグメント記録)
↓ トレースデータ送信
AWS X-Ray サービス
├─ Service Map(依存関係グラフ・レイテンシ・エラー率表示)
└─ Trace 詳細(各セグメント・サブセグメントの処理時間)
EC2 上のアプリでの X-Ray 利用
EC2 インスタンス
├─ アプリ(X-Ray SDK を組み込み)
│ ↓ UDP 2000番ポートへ送信
└─ X-Ray デーモン(サイドカープロセス)
↓ HTTPS で送信
AWS X-Ray サービス
10. パターン4:コンテナ監視(Container Insights)
要件のキーワード
- 「ECS / EKS のコンテナレベルのメトリクス(CPU・メモリ・ネットワーク)を監視したい」
- 「Fargate タスクの パフォーマンス問題を特定したい」
- 「コンテナ / Pod レベルのメトリクスを CloudWatch で一元管理したい」
Container Insights の仕組み
CloudWatch Container Insights は ECS・EKS・Kubernetes のコンテナレベルのメトリクス・ログを収集する機能だ。通常の CloudWatch Metrics よりも細粒度(コンテナ・Pod・タスクレベル)のデータを提供する。
| プラットフォーム | 収集方法 |
|---|---|
| ECS on Fargate | クラスター設定で Container Insights を有効化(エージェント不要) |
| ECS on EC2 | クラスター設定で有効化 + CloudWatch Agent(コンテナ) |
| EKS on Fargate | Fluent Bit アドオンを追加 |
| EKS on EC2 | CloudWatch Agent(DaemonSet)を Pod としてデプロイ |
Container Insights で収集されるメトリクス
- コンテナ / タスク / サービスレベル:CPU 使用率・メモリ使用率・ネットワーク I/O
- Fargate タスク:通常の CloudWatch では取れないタスクレベルのメモリ使用率
- EKS / Kubernetes:Pod ステータス・Node 使用率・クラスター全体のリソース効率
11. 要件キーワード早見表
| 要件キーワード | 正解のツール |
|---|---|
| EC2 の メモリ使用率を監視 | CloudWatch Agent(カスタムメトリクス) |
| EC2 の CPU 使用率でスケールアウト | CloudWatch Alarm + Auto Scaling ポリシー |
| ログに ERROR が出たら Slack へ通知 | CloudWatch Logs + Subscription Filter → Lambda |
| 過去ログを アドホックにクエリ分析 | CloudWatch Logs Insights |
| マイクロサービス間のレイテンシ特定 | AWS X-Ray |
| 依存サービスのどこでエラーが出るか追跡 | AWS X-Ray(サービスマップ) |
| Lambda の コールドスタート時間を把握 | AWS X-Ray(セグメント詳細) |
| ECS / EKS の コンテナレベルのメトリクス | CloudWatch Container Insights |
| ログを S3 にリアルタイムアーカイブ | Subscription Filter → Kinesis Firehose → S3 |
| 複数アラームを AND 条件でまとめて通知 | Composite Alarm |
| インスタンス障害を検知して自動修復 | CloudWatch Alarm(StatusCheckFailed) → EC2 アクション |
| 外部エンドポイントの死活監視 | CloudWatch Synthetics(Canary) |
12. 頻出ひっかけパターンと正しい打ち手
ひっかけ1:「EC2 のメモリ使用率は CloudWatch でデフォルト監視できる」
✗ 誤り:EC2 のメモリ使用率は AWS のハイパーバイザーからは見えないため、デフォルトで収集されない。
✓ 正しい打ち手:CloudWatch Agent を EC2 にインストールし、メモリ使用率をカスタムメトリクスとして送信。その上で CloudWatch Alarm を設定する。
ひっかけ2:「X-Ray は CloudWatch の代わりにメトリクス監視に使える」
✗ 誤り:X-Ray はトレーシングツールであり、CPU 使用率・メモリ使用率などのメトリクス監視はできない。
✓ 正しい打ち手:メトリクス監視は CloudWatch Metrics + Alarms。ボトルネック特定・リクエスト追跡は X-Ray。両者は補完関係にあり、どちらか一方で全てを賄うことはできない。
ひっかけ3:「Lambda の X-Ray トレースには X-Ray デーモンのインストールが必要」
✗ 誤り:Lambda は Active Tracing を有効化するだけで自動的にトレースが収集される。デーモンのインストールは不要。
✓ 正しい打ち手:Lambda コンソールまたは SAM/CDK で Tracing: Active を設定するだけ。EC2 はデーモン必要、Lambda は不要という対比を覚えよう。
ひっかけ4:「CloudWatch Logs Insights でリアルタイムにログを転送できる」
✗ 誤り:Logs Insights は蓄積されたログへのクエリ分析ツールであり、リアルタイム転送機能ではない。
✓ 正しい打ち手:リアルタイム転送が必要なら Subscription Filter を使い、Lambda・Kinesis Firehose に転送する。
ひっかけ5:「EKS で Container Insights を有効化するだけでコンテナメトリクスが取れる」
✗ 誤り:EKS では Container Insights 有効化に加え、CloudWatch Agent(EC2 Node)または Fluent Bit(Fargate)の追加デプロイが必要。
✓ 正しい打ち手:ECS on Fargate はクラスター設定のみで OK。EKS は追加のエージェント導入が必須と覚えよう。
13. 次のアクションチェックリスト
試験直前に確認すべき要点をリスト化した。
- EC2 のメモリ・ディスクはデフォルト収集されない → CloudWatch Agent 必須を反射的に答えられる
- CloudWatch Alarm のアクション3種(SNS / EC2 アクション / Auto Scaling)を言える
- Composite Alarm の AND/OR 条件で誤検知を減らすユースケースを説明できる
- Subscription Filter の転送先(Lambda / Kinesis Firehose / Kinesis Streams / OpenSearch)を列挙できる
- Logs Insights と Subscription Filter の役割の違いを一文で言える
- X-Ray の Trace / Segment / Subsegment / Annotation の役割を理解している
- Lambda の X-Ray はデーモン不要(Active Tracing 設定のみ)を覚えている
- EC2 の X-Ray はデーモンのインストールが必要を覚えている
- Container Insights の ECS と EKS の違い(EKS はエージェント追加が必要)を言える
- CloudWatch Synthetics(Canary)は外部エンドポイントの死活監視に使うことを覚えている
14. 関連記事
- SAA 高可用性設計パターン集
- SAA Lambda / サーバーレス設計パターン
- SAA コンテナ設計パターン(ECS / EKS / Fargate)
- AWS X-Ray とは?分散アプリのトレース・可視化
- CloudWatch Alarms
- CloudWatch Logs