CloudFormation】ALBの正常なホスト数(HealthyHostCount)が0になったら通知するCloudWatchアラームのテンプレート(OK通知付き)
記事の目次
はじめに
AWSでWebアプリケーションを運用する際、ALB(Application Load Balancer)の配下にあるEC2などのインスタンスがすべてダウン(HealthyHostCountが0)してしまう事態は、サービス停止に直結する重大なインシデントです。
この記事では、CloudFormation(Cfn)を使って「ALBの正常なホスト数が0になったらSNSでアラーム通知し、復旧時(OK状態)にも通知する」CloudWatchアラームのテンプレートを紹介します。
CloudFormationテンプレート(YAML)
そのままコピーして使えるCfnテンプレートです。アカウントIDやターゲットグループの識別子は環境に合わせて書き換えてください。
AWSTemplateFormatVersion: "2010-09-09"
Description: "ALBの正常なホスト数が0になったことを検知するCloudWatchアラーム(OK通知付き)"
Parameters:
NotificationSNSTopicArn:
Type: String
Description: "アラーム通知を送信する既存のSNSトピックのARNを入力してください"
Default: "arn:aws:sns:ap-northeast-1:123456789012:your-sns-topic-name" # 12桁のアカウントIDとSNSトピック名を指定
Resources:
ALBHealthyHostAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: "alb-no-healthy-hosts-alarm"
AlarmDescription: "ターゲットグループ内の正常なEC2ホスト数が0になったためアラームを発報します"
MetricName: "HealthyHostCount"
Namespace: "AWS/ApplicationELB"
Statistic: "Minimum"
Period: 60
EvaluationPeriods: 1
Threshold: 1
ComparisonOperator: "LessThanThreshold" # 1未満(つまり0になったら発報)
TreatMissingData: "breaching" # データ不足(Missing)時も障害とみなしてアラーム
Dimensions:
- Name: TargetGroup
Value: "targetgroup/your-target-group-name/1234567890abcdef" # ご自身のターゲットグループ識別子
- Name: LoadBalancer
Value: "app/your-alb-name/abcdef1234567890" # ご自身のALB識別子
# アラーム状態(異常)になったときの通知先
AlarmActions:
- !Ref NotificationSNSTopicArn
# 正常状態(OK)に戻ったときの通知先
OKActions:
- !Ref NotificationSNSTopicArn1. ComparisonOperator: "LessThanThreshold" と Threshold: 1
「ホスト数が0になったら通知」を実現するため、しきい値を「1未満(LessThanThreshold)」に設定しています。これにより、正常なホスト数が0になった瞬間に確実にアラームがトリガーされます。
2. TreatMissingData: "breaching" の理由
ALBへのアクセスが完全に途絶えたり、ターゲットグループ自体に異常が発生したりすると、メトリクス自体が「データ不足(Missing Data)」になる可能性があります。「データがない=正常」と判断されて通知が漏れるのを防ぐため、breaching(不良として処理)を設定するのがベストプラクティスです。
3. OKActions による復旧通知
障害発生時の AlarmActions だけでなく、OKActions を定義することで、システムが自動復旧(オートスケーリングなど)した際に「復旧しました」という通知を同じSNSトピックに飛ばすことができます。運用保守の負担を減らすための必須設定です。
作成後確認
メール確認
まとめ・次のステップ
今回のテンプレートを使えば、ALB配下の全システムダウンを最速で検知し、復旧まで追跡できるようになります。 本番環境で運用する場合は、通知先のSNSトピックをSlackやPagerDutyと連携させて、より気づきやすい仕組みを作るのがおすすめです。
- タグ:
- ALB
- CloudWatch