Amazon CloudWatchとは
- AWS全体のメトリクス監視・ログ収集・アラート通知・自動アクションを行う統合監視サービス
- インフラだけでなく、アプリケーションやカスタムメトリクスも対象
CloudWatchの構成要素と役割
| コンポーネント |
主な役割 |
| CloudWatch Metrics |
AWSリソースやアプリのパフォーマンス指標(CPU、メモリなど)を収集 |
| CloudWatch Logs |
アプリケーションやシステムのログデータを収集・検索・保存 |
| CloudWatch Alarms |
メトリクスのしきい値に基づいて通知やアクションをトリガー |
| CloudWatch Events(= EventBridge) |
状況変化に応じて自動でイベント駆動アクションを実行 |
| CloudWatch Agent |
EC2やオンプレのOSレベルメトリクスやログを収集 |
| CloudWatch Dashboards |
メトリクスをグラフ化・可視化 |
① CloudWatch Metrics(メトリクス)
AWSリソースの性能を監視するための定量的なデータポイント
- EC2 → CPU利用率、ディスクI/O、ネットワーク帯域
- RDS → CPU、ストレージ使用率、接続数
- ELB → リクエスト数、ヘルスチェック結果
- Lambda → 呼び出し回数、エラー率、実行時間
特徴
- メトリクスは「名前空間」単位で管理(例:
AWS/EC2)
- 標準で1分間隔(詳細モニタリングを有効化すると最小1秒単位まで可、アラームは最小10秒)
-
カスタムメトリクス(例:アプリ独自の処理時間)も送信可能
② CloudWatch Logs(ログ監視)
- アプリケーション・システムログ・Lambdaの出力などをリアルタイムで収集・保存・検索・分析できるサービス
構造
Log Group(例:/aws/lambda/my-function)
└─ Log Stream(例:個々のLambdaインスタンス実行)
└─ Log Events(実際のログメッセージ)
できること
-
EC2インスタンスのOSログやアプリログを保存
→ CloudWatch Agentが送信
-
Lambdaの標準出力 (
console.log / print) が自動で保存
-
メトリクスフィルターを定義して、ログ内の文字列をメトリクス化可能
→ 例:「ERROR」が5回以上検出されたらアラーム発火
③ CloudWatch Alarms(アラーム)
- メトリクスやログに基づいてしきい値を設定し、異常検出時に通知・自動対応を行う仕組み
動作イメージ
CPU利用率 > 80%(5分間継続)
→ アラーム状態に遷移
→ SNS通知 or Auto Scaling起動
特徴
- 監視対象:メトリクスまたはメトリクスフィルター
- 状態:
OK / ALARM / INSUFFICIENT_DATA
- 通知先:SNSトピック(メール、Slack連携など)
- アクション:Auto ScalingポリシーやEC2再起動などをトリガー
④ CloudWatch Agent(クラウドウォッチエージェント)
- EC2やオンプレミスサーバーからOSレベルのメトリクスやログファイルをCloudWatchに送信するソフトウェア
収集できるデータ
| 種類 |
例 |
| OSメトリクス |
メモリ使用率、ディスク使用量、スワップ、プロセス数など |
| アプリログ |
Apache/Nginxログ、カスタムアプリケーションログなど |
関連設定
- 設定ファイル:
amazon-cloudwatch-agent.json
- 配置場所:
/opt/aws/amazon-cloudwatch-agent/bin/
- IAMロール:
CloudWatchAgentServerPolicy が必要
⑤ CloudWatch Events(現:Amazon EventBridge)
- AWS内のイベント(状態変化)を検知して、自動アクションを起動できる仕組み
イベントの例
| イベント発生元 |
イベント内容 |
アクション例 |
| EC2 |
インスタンスが停止した |
Lambdaで通知 |
| S3 |
オブジェクトがアップロードされた |
Lambdaで処理実行 |
| RDS |
スナップショット完了 |
SNSで完了通知 |
構成要素
-
イベントルール(Rule):どのイベントを検知するか定義
-
ターゲット(Target):イベント発生時に実行するリソース(例:Lambda, SNS, Step Functions)
例
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": { "state": ["stopped"] }
}
→ 対応するLambda関数が起動し、自動で復旧処理などを実行。
使い分け
| 要件 |
使用サービス |
| AWSリソースの性能を監視したい |
CloudWatch Metrics |
| アプリログを集約して検索したい |
CloudWatch Logs |
| しきい値超過時に通知や自動復旧したい |
CloudWatch Alarms |
| 状態変化やイベントをトリガーに処理したい |
CloudWatch Events |
| EC2やオンプレからOS情報・ログを送りたい |
CloudWatch Agent |