七夕のお願いtweetで願いが叶ったので、レポートしたいと思います。
suz_lab
AWS Management ConsoleのCloudWatchタブを見ると、
左のメニューの下部にSQSの項目があることが確認できます。
クリックすると、下記のメトリクスが取得できていることがわかります。
- NumberOfMessagesSent
- SentMessageSize
- NumberOfMessagesReceived
- NumberOfEmptyReceives
- NumberOfMessagesDeleted
- ApproximateNumberOfMessagesVisible
- ApproximateNumberOfMessagesNotVisible
各メトリックスは、Amazon SQS Dimensions and Metricsのようになります。
サンプルグラフも入れてますが、これは一度に、キューに500程度のメッセージを入れ、
そのメッセージを10インスタンスのEC2で処理(5分程度)し続けたものです。
○NumberOfMessagesSent (個数)
キューに追加されたメッセージ数
一度に500程度のメッセージが追加されていることが確認できます。
○SentMessageSize (バイト数)
キューに追加されたメッセージのバイト数
○NumberOfMessagesReceived (個数)
ReceiveMessage APIで取得したメッセージ数
5分で15メッセージ程度を処理していることがわかります。
○NumberOfEmptyReceives (個数)
ReceiveMessage APIでメッセージが取得できなかった数
○NumberOfMessagesDeleted (個数)
キューから削除されたメッセージ数
メッセージを取得してから、処理して後に削除しているので、
「取得したメッセージ数」とほぼ同じグラフです。
○ApproximateNumberOfMessagesVisible (個数)
キューから取得可能なメッセージ数
最初の500程度のメッセージ数から順調に減少していることがわかります。
○ApproximateNumberOfMessagesNotVisible (個数)
クライアントに送信されてもまだ削除されてないメッセージや
可視状態に戻っていないメッセージの数
Visibilityも含めた詳しい説明は、Amazon SQSってなんじゃ?(その1 Scratchpad編)が参考になります。
ということで、SQSのキューのメッセージ数をトリガーにした、Auto ScalingやSNSのアクションが、
カスタムメトリクスを利用せずにできるようになりました。