0Pricing
Cloud & IT Cert Prep · レッスン

CloudWatchアラームと複合アラーム

しきい値ベースのアラームを設定してAuto ScalingやSNS通知を起動し、複数のアラームを複合アラームにまとめて通知ノイズを減らします。

「CloudWatchアラームと複合アラーム」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

CloudWatch アラームとは

CloudWatch アラームは、指定した期間にわたって単一のメトリクス、またはメトリクス数学式の結果を監視します。メトリクスが定義したしきい値を超えると、アラームの状態が変化し、SNS 通知の送信、Auto Scaling グループのスケーリング、EC2 インスタンスの停止、Systems Manager OpsItem の実行などのアクションを自動的にトリガーできます。アラームは、AWS における運用対応を自動化する主要な仕組みです。

アラームの状態

CloudWatch アラームは常に次の 3 つの状態のいずれかになります。OK — メトリクスが定義されたしきい値の範囲内にある状態、ALARM — 必要な回数の評価期間にわたってメトリクスがしきい値を超えた状態、INSUFFICIENT_DATA — アラームが作成されたばかりである、メトリクスを利用できない、または十分なデータがまだ収集されていない状態です。状態が遷移すると、その状態変更に設定されたアクションがトリガーされます。OK、ALARM、INSUFFICIENT_DATA の状態ごとに異なる SNS トピックを設定することもできます。

# View all alarms and their current state
aws cloudwatch describe-alarms \
  --query 'MetricAlarms[].{Name:AlarmName,State:StateValue,Metric:MetricName}' \
  --output table

# List only alarms currently in ALARM state
aws cloudwatch describe-alarms \
  --state-value ALARM \
  --query 'MetricAlarms[].AlarmName'

CloudWatch アラームの作成

アラームを作成するときは、メトリクスと名前空間、統計(Average、Sum、Maximum など)、期間(メトリクスを評価する間隔を秒単位で指定)、評価期間(しきい値を超える必要がある連続した期間の数)、しきい値、および比較演算子を指定します。指定した数の連続した評価期間でメトリクスがしきい値を超えると、アラームがトリガーされます。

# Create an alarm: trigger when CPU > 70% for 2 consecutive 5-min periods
aws cloudwatch put-metric-alarm \
  --alarm-name HighCPUAlarm \
  --alarm-description 'Trigger when EC2 CPU exceeds 70%' \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:AlertTeam

アラームアクション:SNS、Auto Scaling、EC2

アラームアクションの対象には、複数の送信先を指定できます。Amazon SNS トピック(メールや SMS の送信、Lambda のトリガー)、Auto Scaling ポリシー(ASG のスケールインまたはスケールアウト)、EC2 アクション(EC2 インスタンスの停止、終了、再起動、復旧)などです。状態(OK、ALARM、INSUFFICIENT_DATA)ごとに異なるアクションのセットを指定できます。たとえば、ALARM でチームに通知し、OK で復旧を通知し、監視の欠落を検知するため INSUFFICIENT_DATA でアラートを送信できます。

# Alarm that stops an idle EC2 instance when CPU < 1% for 30 min
aws cloudwatch put-metric-alarm \
  --alarm-name LowCPUStopInstance \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 6 \
  --threshold 1 \
  --comparison-operator LessThanThreshold \
  --alarm-actions arn:aws:swf:us-east-1:111122223333:action/actions/AWS_EC2.InstanceId.Stop/1.0

欠落データの扱い

CloudWatch がアラームを評価する際に一部のデータポイントが欠落している場合、それらをどのように扱うかを決める必要があります。選択肢は次のとおりです。notBreaching(欠落データをしきい値の範囲内として扱う。他のデータが正常ならアラームは OK のまま)、breaching(欠落データをしきい値超過として扱う。アラームは ALARM に遷移)、ignore(アラームの状態を変更しない)、missing(アラームを INSUFFICIENT_DATA に遷移)です。誤った選択肢を指定すると、誤検知やサイレント障害につながります。これは SAA-C03 試験で重要なポイントです。

# Set missing data treatment on an alarm
aws cloudwatch put-metric-alarm \
  --alarm-name WebsiteLatencyAlarm \
  --metric-name TargetResponseTime \
  --namespace AWS/ApplicationELB \
  --statistic Average \
  --period 60 \
  --evaluation-periods 3 \
  --threshold 2.0 \
  --comparison-operator GreaterThanThreshold \
  --treat-missing-data breaching \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

アラームの解決時間と評価期間

アラームの解決時間は、期間 × 評価期間数で求められます。たとえば、期間が 60 秒で評価期間数が 5 の場合、アラームは 1 分間のデータポイントを 5 つ連続して評価します。デフォルトでは、5 つすべての期間でしきい値を超えた場合にのみ、アラームは ALARM に遷移します。datapoints-to-alarmを設定すると、N 個の期間のうち M 個だけがしきい値を超えればよいようにできます。たとえば5 つのうち 3 つと設定すると、一時的なスパイクによる誤検知を減らせます。

# Alarm that requires 3 out of 5 periods to breach (reduces false positives)
aws cloudwatch put-metric-alarm \
  --alarm-name CPUSpike \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=AutoScalingGroupName,Value=my-asg \
  --statistic Average \
  --period 60 \
  --evaluation-periods 5 \
  --datapoints-to-alarm 3 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:...

複合アラーム:複数のアラームの組み合わせ

複合アラームは、ブール論理(AND、OR、NOT)を使用して、複数の他のアラームの状態を評価します。ルール式が true と評価された場合にのみ、ALARM 状態になります。複合アラームはアラートノイズの削減に使用されます。たとえば、高 CPU 使用率と高レイテンシーの両方のアラームが同時に発生した場合にのみアラートを送信できます。バッチ処理中は CPU 使用率が高くても問題ない場合があるためです。また、メンテナンス期間中に子アラームを抑制する目的でも使用できます。

# Create a composite alarm (alerts only when BOTH CPU and latency are high)
aws cloudwatch put-composite-alarm \
  --alarm-name HighLoadComposite \
  --alarm-rule 'ALARM("HighCPUAlarm") AND ALARM("HighLatencyAlarm")' \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:CriticalOps \
  --alarm-description 'Alert only when both CPU and latency are elevated'

複合アラームによるアラームの抑制

複合アラームはアラーム抑制アクションをサポートしています。計画メンテナンス中に子アラームを抑制するよう、複合アラームを設定できます。たとえば、デプロイ期間中に、'MaintenanceMode' アラームと OR 論理で組み合わせた複合アラームを設定し、メンテナンス中はすべての子アラーム通知を抑制できます。これにより、アップグレードのために意図的にサービスを停止した際に、大量のアラートが発生するのを防げます。

# Composite alarm with suppression: alert UNLESS maintenance is active
aws cloudwatch put-composite-alarm \
  --alarm-name ProductionAlerts \
  --alarm-rule 'ALARM("HighCPUAlarm") AND NOT ALARM("MaintenanceModeAlarm")' \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:ProductionOps

Auto Scaling ポリシーとの統合

Auto Scaling グループは、ステップスケーリングおよびシンプルスケーリングポリシーのトリガーとして CloudWatch アラームを使用します。アラームが ALARM 状態になると、スケーリングポリシーが実行されます。ステップスケーリングでは、異なるしきい値範囲に対して複数のスケーリング調整を定義します。たとえば、CPU 使用率が 70~80% ならインスタンスを 1 台、80~90% なら 3 台、90% を超えたら 5 台追加します。アラームは、評価時の超過レベルに基づいて、該当する最初のステップをトリガーします。

# Create a scale-out alarm linked to an ASG scaling policy
aws cloudwatch put-metric-alarm \
  --alarm-name ScaleOutTrigger \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=AutoScalingGroupName,Value=my-asg \
  --statistic Average \
  --period 60 \
  --evaluation-periods 2 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:POLICY_ARN

CloudWatch 請求アラーム

CloudWatch では、推定 AWS 料金がしきい値を超えたときに通知する請求アラームを作成できます。請求メトリクスは、リソースを実行している場所にかかわらず、us-east-1 リージョンでのみ発行され、約 6 時間ごとに更新されます。請求アラームを有効にするには、まず AWS Billing コンソールでBilling Alertsを有効にする必要があります。より精密なツールはAWS Budgetsですが、CloudWatch 請求アラームも試験で問われる有効な選択肢です。

# Create a billing alarm for $100 threshold
aws cloudwatch put-metric-alarm \
  --region us-east-1 \
  --alarm-name MonthlyBillingAlert \
  --alarm-description 'Alert when estimated charges exceed $100' \
  --metric-name EstimatedCharges \
  --namespace AWS/Billing \
  --dimensions Name=Currency,Value=USD \
  --statistic Maximum \
  --period 86400 \
  --evaluation-periods 1 \
  --threshold 100 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:BillingAlerts

アラームのテストと監視

set-alarm-stateコマンドを使用してアラームの状態を手動で設定すると、実際にしきい値を超えるまで待たずにアラームアクションをテストできます。SNS トピック、Auto Scaling ポリシー、Lambda 関数が正しく応答することを確認するのに役立ちます。本番環境でアラームアクションに依存する前に、必ず非本番環境でテストし、SNS トピックに正しいメールサブスクリプションが登録・確認されていることを確認してください。

# Manually trigger an alarm for testing (does NOT persist — reverts on next evaluation)
aws cloudwatch set-alarm-state \
  --alarm-name HighCPUAlarm \
  --state-value ALARM \
  --state-reason 'Testing alarm action'

# Watch alarm state history
aws cloudwatch describe-alarm-history \
  --alarm-name HighCPUAlarm \
  --history-item-type StateUpdate \
  --query 'AlarmHistoryItems[].{Time:Timestamp,Summary:HistorySummary}'

理解度チェック

このレッスンで扱った AWS Solutions Architect(SAA-C03)の概念について、理解度を確認します。

レッスンのまとめ

このレッスンでは、アラームには 3 つの状態(OK、ALARM、INSUFFICIENT_DATA)があり、SNS、Auto Scaling、EC2 のアクションをトリガーできること、datapoints-to-alarmによって M-of-N 評価を行い誤検知を減らせること、複合アラームによってブール論理で複数のアラームを組み合わせ、アラートノイズを抑制できることを学びました。次は、ログを一元管理する CloudWatch Logs と Log Insights について学びます。

よくある質問

「CloudWatchアラームと複合アラーム」レッスンは無料ですか?

はい。「CloudWatchアラームと複合アラーム」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

「CloudWatchアラームと複合アラーム」で何を学びますか?

しきい値ベースのアラームを設定してAuto ScalingやSNS通知を起動し、複数のアラームを複合アラームにまとめて通知ノイズを減らします。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cloud & IT Cert Prepを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「CloudWatchアラームと複合アラーム」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?

はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CloudWatchメトリクス、名前空間、ディメンション
  2. CloudWatchアラームと複合アラーム
  3. CloudWatch LogsとLogs Insights
  4. CloudWatchダッシュボードとContainer Insights
← Cloud & IT Cert Prepに戻る