CloudWatch 異常検出(Anomaly Detection)
機械学習を使ってメトリクスやログの「通常の振る舞い」を自動的に学習し、そこから外れた異常を検出する機能
メトリクス異常検出(Outlier Detection)
CPU使用率やリクエスト数などのメトリクスに対して使用する異常検出機能
- 過去のデータから「正常な範囲」のバンド(帯)を自動生成
- バンドを外れたらアラームを発火できる
出典: Create a CloudWatch alarm based on anomaly detection
“Anomaly detection analyzes past metric data and creates a model of expected values. The expected values take into account the typical hourly, daily, and weekly patterns in the metric.”
ログ異常検出(Log Anomaly Detection)
ログイベントのパターンを機械学習で分析する異常検出機能
- 新しいパターンの出現、パターン頻度の急変、トークン値の変化などを検出
“Anomaly detection uses machine-learning and pattern recognition to establish baselines of typical log content.”
CloudWatch Logs/Metrics のデータ転送・変換機能
CloudWatch の世界
┌─────────────────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ CloudWatch Logs │ │ CloudWatch Metrics │ │
│ │ │ │ │ │
│ │ ログデータ │ │ メトリクスデータ │ │
│ └────────┬────────┘ └────────────┬────────────┘ │
│ │ │ │
│ │ │ │
│ ┌─────┴─────┐ ┌───────┴───────┐ │
│ │ │ │ │ │
│ ▼ ▼ ▼ │ │
│ ┌────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │サブスク│ │メトリクス │ │メトリクス │ │ │
│ │リプショ│ │フィルター │─────────────▶│ストリーム │ │ │
│ │ンフィル│ │ │ メトリクス │ │ │ │
│ │ター │ │ │ を生成 │ │ │ │
│ └────┬───┘ └────────────┘ └─────┬──────┘ │ │
│ │ │ │ │
└──────┼────────────────────────────────────────┼────────────────┼───────┘
│ │ │
▼ ▼ │
┌──────────────────┐ ┌──────────────────┐ │
│ 外部サービス │ │ 外部サービス │ │
│ - Kinesis │ │ - S3 │ │
│ - Lambda │ │ - Datadog │ │
│ - Firehose │ │ - Splunk 等 │ │
└──────────────────┘ └──────────────────┘ │
│
※ メトリクスは CloudWatch│
内でアラーム等に利用 ◀─┘
比較表
| 項目 | サブスクリプションフィルター | メトリクスフィルター | メトリクスストリーム |
|---|---|---|---|
| 所属 | CloudWatch Logs | CloudWatch Logs | CloudWatch Metrics |
| 入力 | ログイベント | ログイベント | メトリクス |
| 出力 | ログを外部へ転送 | ログからメトリクスを生成 | メトリクスを外部へ転送 |
| 宛先 | Kinesis, Lambda, Firehose | CloudWatch Metrics | S3, Firehose, サードパーティ |
データフローで見る違い
【サブスクリプションフィルター】
ログ ──▶ フィルタ ──▶ Kinesis/Lambda/Firehose ──▶ 外部システム
(ログのまま転送)
【メトリクスフィルター】
ログ ──▶ フィルタ ──▶ CloudWatch Metrics ──▶ アラーム/ダッシュボード
(ログ→数値に変換)
【メトリクスストリーム】
CloudWatch Metrics ──▶ Firehose ──▶ S3/Datadog/Splunk 等
(メトリクスを外部へ)
サブスクリプションフィルター
ログイベントを外部サービスにリアルタイム転送する機能
出典: Concepts - Amazon CloudWatch Logs
“destination arn: The Amazon Resource Name (ARN) of the Amazon Kinesis Data Streams stream, Firehose stream, or Lambda function you want to use as the destination of the subscription feed.”
ユースケース:
- ログを Elasticsearch/OpenSearch に送って全文検索
- Lambda でログをリアルタイム処理してアラート
- Kinesis 経由でログを別アカウントに集約
メトリクスフィルター
ログイベントから数値メトリクスを生成する機能
出典: Creating metrics from log events using filters - Amazon CloudWatch Logs
“Metric filters define the terms and patterns to look for in log data as it is sent to CloudWatch Logs. CloudWatch Logs uses these metric filters to turn log data into numerical CloudWatch metrics that you can graph or set an alarm on.”
ユースケース:
- ログ内の「ERROR」出現回数をカウントしてアラーム設定
- レスポンスタイムをログから抽出してメトリクス化
- 特定のユーザーアクションの発生頻度を監視
メトリクスストリーム
CloudWatch メトリクスを外部にニアリアルタイムでストリーミングする機能。「CloudWatch の外にメトリクスを持ち出したい」ときに使う
出典: Use metric streams - Amazon CloudWatch
“You can use metric streams to continually stream CloudWatch metrics to a destination of your choice, with near-real-time delivery and low latency.”
なぜ嬉しいのか
- 既に Datadog/Splunk 等を使っている場合
従来の方法(GetMetricData API でポーリング)だと定期的に API を叩くスクリプトが必要で、スロットリングのリスクもある。メトリクスストリームならプッシュ型で自動的に流れてくる
出典: Stream Amazon CloudWatch metrics to IBM Instana with Amazon Data Firehose
“This approach moves from reactive, sample-based monitoring to a continuous, near real-time observability pipeline… Metric Streams can deliver a significant cost advantage, often around a 3× reduction in ingestion cost compared to aggressive 1-minute GetMetricData polling”
- メトリクスを長期保存・分析したい場合
CloudWatch のメトリクス保持期間には制限がある。S3 に流しておけば無期限に保存可能で、Athena で SQL 分析もできる
出典: Metrics concepts - Amazon CloudWatch
“Data points with a period of less than 60 seconds are available for 3 hours, data points with a period of 60 seconds are available for 15 days, data points with a period of 300 seconds are available for 63 days, and data points with a period of 3600 seconds are available for 455 days.”
- マルチクラウド/ハイブリッド環境
AWS + GCP + オンプレを一元監視したい場合、Datadog や Grafana Cloud のような統合監視ツールに全部集約するのが楽
関連用語
フィルターパターン
サブスクリプションフィルターとメトリクスフィルターの両方で使われる、ログイベントをマッチングするための構文。特定の文字列やJSONフィールドを指定できる
Firehose(Amazon Data Firehose)
ストリーミングデータを S3、Redshift、OpenSearch 等に配信するフルマネージドサービス。サブスクリプションフィルターとメトリクスストリームの両方で宛先として利用可能