CloudWatch のアラームと通知

AWS のモニタリングとトラブルシューティング

John Q. Martin

Principal Consultant

CloudWatch アラームとは

 

主要な概念

  • 一定期間にわたって単一のメトリクスを監視します
  • メトリクスがしきい値を超えるとアクションを実行します

 

CloudWatch アラームの 6 つのコアコンポーネント(メトリクス、しきい値、期間、評価期間、アラームのデータポイント数、アクション)

AWS のモニタリングとトラブルシューティング

アラームの状態

CloudWatch アラームの 3 つの状態:OK、ALARM、INSUFFICIENT_DATA

メトリクスデータが到着するにつれて CloudWatch アラームが状態遷移する様子を示した図

AWS のモニタリングとトラブルシューティング

アラームの評価

 

  1. 指定した間隔でデータポイントを収集します
  2. 期間内に統計(平均、合計、最大、最小)を適用します
  3. 結果をしきい値と比較します
  4. しきい値超過の評価期間数をカウントします
  5. アラームのデータポイント数のしきい値を満たすと状態を変更します

 

Metric: CPUUtilization > 80%
Period: 5 min | 
Eval Periods: 3 | 
Datapoints to Alarm: 2 of 3

Period 1: 85% (breach) | 
Period 2: 75% (ok) | 
Period 3: 90% (breach)
Result: ALARM — 2 of 3 breached
AWS のモニタリングとトラブルシューティング

評価戦略

 

連続違反・部分違反・単一違反の 3 つのアラーム評価戦略と、それぞれの感度トレードオフ

AWS のモニタリングとトラブルシューティング

アラームアクションの種類とトリガー

 

アクションのトリガー

  • OK
  • ALARM
  • INSUFFICIENT_DATA

 

アクションの種類

  • SNS 通知
  • Auto Scaling
  • EC2 アクション(停止・終了・再起動・復旧)
  • Systems Manager
AWS のモニタリングとトラブルシューティング

データ欠損時の動作

 

アラームのデータ欠損時の動作オプション:notBreaching、breaching、ignore、missing

AWS のモニタリングとトラブルシューティング

標準アラームの作成:AWS CLI

aws cloudwatch put-metric-alarm \
  --alarm-name HighCPUUtilization \
  --alarm-description "Alert when CPU exceeds 80%" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic
AWS のモニタリングとトラブルシューティング

コンポジットアラーム:概要と必要性

問題

  • 関連する複数のアラームが個別に発火する = アラート疲労

解決策

  • 論理演算子でアラームを組み合わせます

子アラームを AND・OR・NOT 演算子で組み合わせるコンポジットアラームのロジック

AWS のモニタリングとトラブルシューティング

コンポジットアラームの作成:AWS CLI

aws cloudwatch put-composite-alarm \
  --alarm-name CriticalSystemHealth \
  --alarm-description "Critical when CPU and Memory both high" \
  --actions-enabled \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:critical-alerts \
  --alarm-rule "ALARM(HighCPUAlarm) AND ALARM(HighMemoryAlarm)"
複雑なルールの例
--alarm-rule "(ALARM(HighErrorRate) OR ALARM(HighLatency)) \
  AND NOT ALARM(MaintenanceMode)"
AWS のモニタリングとトラブルシューティング

しきい値の選択戦略

しきい値選択の 4 つの戦略:ベースライン偏差、容量上限、SLA 目標、変化率

AWS のモニタリングとトラブルシューティング

マルチティアアラーム戦略

 

警告・重大・緊急の各ティアを別々の SNS トピックにルーティングするマルチティアアラーム応答

例: CPU 警告は 75%、重大は 90% に設定し、それぞれ異なる SNS トピックを使用

AWS のモニタリングとトラブルシューティング

異常検出アラーム

aws cloudwatch put-metric-alarm \
  --alarm-name AnomalousTraffic \
  --comparison-operator LessThanLowerOrGreaterThanUpperThreshold \
  --metrics '[
    {"Id":"m1","MetricStat":{"Metric":{"Namespace":"AWS/ApplicationELB",
      "MetricName":"RequestCount"},"Period":300,"Stat":"Average"}},
    {"Id":"e1","Expression":"ANOMALY_DETECTION_BAND(m1, 2)"}
  ]'
  • ML モデルがメトリクスの正常な動作を学習します
  • 動的なしきい値バンドを作成します(設定可能)
  • 日次・週次のパターンに適応します
  • 手動によるしきい値の調整を削減します
AWS のモニタリングとトラブルシューティング

リソースアラーム:Lambda と ALB

Lambda アラーム

エラー数、スロットル、タイムアウト上限付近の高レイテンシを監視する推奨 Lambda アラーム

ALB アラーム

ターゲット応答時間、異常ホスト数、5xx エラー数を監視する推奨 ALB アラーム

AWS のモニタリングとトラブルシューティング

アラーム管理の推奨プラクティス

  • 命名規則:<Service>-<Metric>-<Resource>-<Severity>
  • 説明:監視対象、しきい値、トラブルシューティングのヒント、ランブックリンクを記載
  • タグ:環境、チーム、重大度
  • 毎月レビュー:しきい値の調整、不要なアラームの削除、アクションの更新
aws cloudwatch set-alarm-state \
  --alarm-name MyAlarm \
  --state-value ALARM \
  --state-reason "Testing alarm notification"
AWS のモニタリングとトラブルシューティング

まとめ

  • アラームの 3 つの状態:OK、ALARM、INSUFFICIENT_DATA
  • 評価戦略:連続違反、部分違反、単一違反
  • コンポジットアラームは AND・OR・NOT で複数のアラームを組み合わせます
  • 4 つのしきい値戦略:統計的、容量、SLA、変化率
  • マルチティアアラート:警告 → 重大 → 緊急
  • Lambda(エラー、スロットル、実行時間)と ALB(5xx、レイテンシ)のリソースアラーム
AWS のモニタリングとトラブルシューティング

練習しましょう!

AWS のモニタリングとトラブルシューティング

Preparing Video For Download...