2011年8月29日月曜日

SQSのキューのメッセージが処理されなくなったら通知(CloudWatch)

スズキです。

キューのメッセージが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]

これでアプリケーションの処理が途中でとまっても、すぐに検知できます。
--------
http://www.suz-lab.com

0 コメント: