監視サービスの全体像

AWS の監視・可観測性(Observability)サービスは大きく4つの役割に分かれる。

役割AWSサービスオンプレ対応
メトリクス監視・アラートCloudWatch Metrics + AlarmZabbix / Nagios / Datadog
ログ集約・検索CloudWatch LogsFluentd + Elasticsearch / Splunk
分散トレーシングAWS X-RayJaeger / Zipkin / Dynatrace
大規模ログ分析・可視化OpenSearch Service(+ Dashboards)Elasticsearch + Kibana

判断フロー

何を監視・分析したいか?
 ├─ CPU / メモリ / ネットワーク等のリソースメトリクス・アラート
 │ → CloudWatch Metrics + Alarm
 ├─ アプリ・インフラのログ収集・検索・パターン抽出
 │ → CloudWatch Logs(+ Logs Insights)
 ├─ マイクロサービス間のリクエスト追跡・レイテンシ計測
 │ → AWS X-Ray
 └─ 大量ログの全文検索・複雑なダッシュボード・BI 分析
  → OpenSearch Service

CloudWatch Metrics — メトリクス監視

CloudWatch Metrics は AWS リソースのメトリクスを自動収集・保存し、Alarm(閾値アラート) で通知する。 EC2・RDS・ALB などの AWS マネージドサービスのメトリクスはデフォルトで自動収集される。

主なメトリクス収集対象:

  • EC2:CPU 使用率・ネットワーク I/O・ディスク I/O(5分間隔がデフォルト。詳細モニタリングで1分間隔)
  • RDS / Aurora:DB コネクション数・クエリレイテンシ・バッファヒット率
  • ALB / NLB:リクエスト数・4xx/5xx エラー率・レイテンシ
  • Lambda:呼び出し数・エラー数・タイムアウト・コンカレンシー
  • カスタムメトリクス:アプリの独自メトリクスを PutMetricData API で送信

⚠️ EC2 のメモリ使用率はデフォルトで取れない

EC2 の CPU / ネットワーク / ディスク I/O は自動収集されるが、メモリ使用率・ディスク空き容量はデフォルトでは取れない。CloudWatch Agent をインストールすることでこれらのメトリクスを収集できる。オンプレから移行する際、メモリ監視が抜ける落とし穴として要注意だ。

Alarm の設定ポイント:

  • アラーム → SNS トピック → Email / Slack(Lambda 経由)/ PagerDuty で通知
  • アラーム → Auto Scaling Policy で自動スケールアウト/インのトリガーにも使える
  • Composite Alarm で複数条件の AND/OR 組み合わせアラームを定義できる

CloudWatch Logs — ログ集約・検索

CloudWatch Logs は AWS サービスおよびアプリのログを集約・保存・検索するサービスだ。 EC2 / ECS / Lambda / RDS などから CloudWatch Agent や SDK でログを送信する。

Logs Insights:
CloudWatch Logs Insights は SQL ライクなクエリ言語でログを分析できる機能だ。 「エラーログの件数を時系列で集計」「特定のリクエスト ID のログを追跡」などが GUI 上で実現できる。

💡 ログの保持期間を設定する

CloudWatch Logs はデフォルトでログを永続保存するが、それが原因でコストが膨らむケースが多い。保持期間(1日〜10年)を必ず設定しよう。長期保管が必要なログは S3 にエクスポートし、Glacier へのライフサイクルポリシーで低コスト保管する。

X-Ray — 分散トレーシング

AWS X-Ray はマイクロサービス・コンテナ・Lambda などの サービス間リクエストをエンドツーエンドで追跡する分散トレーシングサービスだ。 「API のどのコンポーネントでレイテンシが発生しているか」「エラーの連鎖がどこから来ているか」を可視化する。

X-Ray を選ぶケース:

  • マイクロサービス構成で、障害発生時にどのサービスが原因か特定できない
  • Lambda のコールドスタートや DB クエリのボトルネックを計測したい
  • API Gateway → Lambda → RDS の全レイテンシを一覧で確認したい

X-Ray SDK をアプリに組み込み、AWS SDK の呼び出しを自動インストルメントすることで、コードの変更量を最小化して導入できる。

OpenSearch Service — 大規模ログ分析

Amazon OpenSearch Service(旧 Amazon Elasticsearch Service)は Elasticsearch / OpenSearch 互換のマネージドサービスだ。 CloudWatch Logs より複雑なクエリ・全文検索・可視化(OpenSearch Dashboards / 旧Kibana)が必要な場合に選択する。

OpenSearch Service を選ぶケース:

  • 秒間数万件のログを全文検索したい
  • 多次元のダッシュボード(地図・折れ線・ヒートマップ等)を構築したい
  • オンプレで Elasticsearch + Kibana を使っていて移行先を探している
  • セキュリティログ分析(SIEM 的な用途)

⚠️ OpenSearch Service はコストに注意

OpenSearch Service はデータノードを常時起動するコスト構造のため、CloudWatch Logs より高コストになりやすい。「Logs Insights で十分か」を先に検討しよう。本当に必要なのは大規模ログ分析が必要なチームだ。

オンプレ監視ツールとの対応

オンプレAWS 移行先補足
Zabbix / Nagios(死活監視・メトリクス)CloudWatch Metrics + AlarmCloudWatch Agent で独自メトリクスも収集
Fluentd / Logstash(ログ転送)CloudWatch Agent / Fluent Bit(ECS)ECS は Fluent Bit が AWS 統合でサポート
Elasticsearch + Kibana(ログ分析)OpenSearch Service + DashboardsAPI 互換あり(バージョンによって差異あり)
Datadog / Dynatrace(APM)X-Ray + CloudWatch(または継続利用)Datadog は AWS 統合エージェントでそのまま使える場合も多い

💡 サードパーティ監視ツールとの共存

Datadog / Dynatrace / New Relic などを既に使っている場合は、無理に AWS ネイティブに置き換えずそのまま継続するケースも多い。これらのツールは AWS との統合が充実しており、EC2 / ECS / Lambda のメトリクスをエージェントや API 経由で収集できる。移行コスト(学習・設定移行)と監視品質のバランスで判断しよう。

実務での設計パターン

パターン1:標準的な Web システムの監視構成

  • CloudWatch Metrics:EC2 / ALB / RDS のリソース監視
  • CloudWatch Agent:EC2 のメモリ・ディスク使用率を追加収集
  • CloudWatch Alarm → SNS → Slack(Lambda 経由)でアラート通知
  • CloudWatch Logs:アプリログ・アクセスログを集約
  • CloudWatch Dashboard:主要メトリクスを1画面で可視化

パターン2:マイクロサービスの可観測性構成

  • 上記 + X-Ray でサービス間トレーシング
  • 大量ログ分析が必要な場合のみ OpenSearch Service を追加

次の章では…

PART 08 ではこのシリーズのまとめとして、各レイヤーの判断フローを1枚の早見表に集約する。移行設計の場で参照できる形に整理する。

→ PART 08 — まとめ・判断フロー早見表へ