CloudWatchとSNSでELBのヘルスチェックが落ちたらメール通知する

とりあえずサービスが生きてるか死んでるか死活監視のメールぐらい飛ばしたいよねと思い、CloudWatch調べてみた。ちなみにそもそも監視がAWSが生きてることを前提にしてはいけない場合にはAWS外からpingdomとか外形監視のサービスを利用を検討すればよいんじゃないですかね。今回そこまではしないです。

というわけでClouldWatchとSNSでELBのヘルスチェックが1分以上落ちてたらアラートでメール通知するというのをやってみた。

CloudWatch->Alarms->Create Alarmメニューから作成。

  • Select Metric:監視対象の指標を選ぶ。具体的には以下で正常な振分先ホスト数の1分間の最小値を使った。
    • ELB->Per-LB Metrics->(LB名)->HealthyHostCount->Minimum->1 Minutes
  • Define Alarm
    • Alarm Threshold:アラームのしきい値を選ぶ。具体的にはAPサーバ1台しかないので、1台以下でトリガする。
      • Name: alarm-xxxx-HealthyHostCountとか適当な名前を付ける。
      • Description: 適当な説明を記載。
      • Whenever: HelthyHostCount (自動で入力される)
      • is : < 1
      • for: 1 consecutive period(s)
    • Actions:通知方法を選ぶ。具体的にはアラームになったらSNSのトピック生成してメールする。
      • Whenerver this alarm: State is ALARM
      • Send notification to: topic-xxxx-HealthyHostCountとか適当な名前を付けてnew listを選択
      • Email list: 通知先のメールアドレスを入力する。

ちなみにActionsに+Notificationで複数登録できるので

      • Whenerver this alarm: State is OK
      • Send notification to: アラームと同じ
      • Email list: アラームと同じ

も登録しておいたら正常復旧も拾えたのでネットの瞬断とか一時的な要因で自動復旧した場合とかは慌てなくてよいので正常もトリガしたらよいと思う。

Create Alarm押すとメールアドレスに確認メールが来るのでConfirm subscriptionのリンクを踏んで認証する。

準備できたら試しに手動でアプリのプロセス落としてみる。メールが飛んできたら成功。プロセス起動してサービス復旧したら復旧タイミングでもちゃんとメールも飛んだ。とりあえずサービス生きてるか死んでるかぐらいのレベルの監視ならこれで十分なんじゃないかと。

参考