キューのメッセージが0になったときに通知することは、よくやると思いますが、ここでは、キューのメッセージが処理されなくなったときの通知に関して紹介します。
当然、CloudWatchを利用するわけですが、キューのメッセージが処理されなくなった状態の確認は、アプリケーションが受信したメッセージ数を表す下記のNumberOfMessageReceivedを確認することで可能です。
キューのメッセージが処理されなくなった場合は、NumberOfMessageReceivedが「0」になるはずです。
そして、このNumberOfMessageReceivedに対して、下記のようにアラームを作成します。
ここでは値が「0」になったら(メッセージが処理されなくなったら)
アラーム状態になるように設定しています。
メールは下記のように、状態が「ALARM」、「OK」、「INSUFFICIENT_DATA」になった場合、つまり、すべての状態の変わり目に送信されるようにしました。
SNSを確認すると下記のように、上記で指定した通知先(メールアドレス)が作成されていますが、まだ、PendingConfirmationの状態で有効にはなっていません。
この状態では、次のようなメールが送られているはずなのでConfirm subscriptionを
クリックすることで有効になります。
You have chosen to subscribe to the topic: arn:aws:sns:ap-northeast-1:238042831511:golfans To confirm this subscription, click or visit the link below (If this was in error no action is necessary): Confirm subscription Please do not reply directly to this e-mail. If you wish to remove yourself from receiving all future SNS subscription confirmation requests please send email to sns-opt-out
有効になると、下記のようにSubscription IDが付与されます。
そして、実際の通知時に送られてくるメールは下記のようなものとなります。
[ALARM] Alarm ZeroMessageReceived in APAC - Tokyo is now in state ALARM You are receiving this email because your Amazon CloudWatch Alarm "ZeroMessageReceived" in the APAC - Tokyo region has entered the ALARM state, because "Threshold Crossed: 1 datapoint (0.0) was less than or equal to the threshold (0.0)." at "Sunday 28 August, 2011 20:56:25 UTC". View this alarm in the AWS Management Console: ... Alarm Details: - Name: ZeroMessageReceived - Description: ZeroMessageReceived - State Change: OK -> ALARM - Reason for State Change: Threshold Crossed: 1 datapoint (0.0) was less than or equal to the threshold (0.0). - Timestamp: Sunday 28 August, 2011 20:56:25 UTC Threshold: - The alarm is in the ALARM state when the metric is LessThanOrEqualToThreshold 0.0 for 300 seconds. Monitored Metric: - MetricNamespace: AWS/SQS - MetricName: NumberOfMessagesReceived - Dimensions: [QueueName = crawl] - Period: 300 seconds - Statistic: Sum - Unit: not specified State Change Actions: - OK: [arn:aws:sns:ap-northeast-1:000000000000:suz-lab] - ALARM: [arn:aws:sns:ap-northeast-1:000000000000:suz-lab] - INSUFFICIENT_DATA: [arn:aws:sns:ap-northeast-1:000000000000:suz-lab]
以上で、アプリケーションの処理が途中で止まっても、すぐに検知することができます。