SQSのStandardキューで、処理できるメッセージがコンシューマー不足により滞留している。繰り返し失敗するメッセージの問題は別途調査している。
通常メッセージの待ち時間の目安が300秒に達する前に、240秒以上の滞留をCloudWatchアラームで知らせたい。単なる投入数や件数ではなく、年齢の指標を選ぶ。
最も適切なメトリクスはどれか。
ApproximateAgeOfOldestMessageを240秒以上で警告する判断材料にし、コンシューマーの処理能力を調べる。
詳細解説
未処理の最古メッセージの年齢を示す近似値で、通常の滞留時間に対する警告の判断材料になる。
キューへ投入した件数であり、投入済みメッセージがどれだけ古くなったかは示さない。
受信可能なバックログ件数は分かるが、最古メッセージの年齢を秒で示す値ではない。
受信済みで削除・期限切れ前の処理中件数であり、メッセージの年齢そのものではない。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
公式資料でAge、Visible、NotVisible、Sentの単位と、Standardキューの繰り返し失敗時の動作を確認する。
参考にした公式資料
確認できる内容
Ageは未処理メッセージの年齢であり、初回受信からの経過時間ではない。近似値と除外条件を踏まえて警告を使える。
理解のポイント
- ApproximateAgeOfOldestMessage
- SQS
- 処理遅延
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
年齢と件数は異なる
ApproximateAgeOfOldestMessageは未処理の最古メッセージの年齢を秒で示す近似値である。Sentは投入数、Visibleは受信可能件数、NotVisibleは処理中件数を示す。240秒の警告は対処の余裕を取る設定で、全メッセージの300秒以内の完了を保証しない。
繰り返し失敗とDLQを別に調べる
Standardキューで何度も受信され削除されないメッセージは後方へ移され、poison-pillメッセージはこの年齢指標から除外される。DLQへ移動したメッセージの年齢指標は移動時を起点とする。Ageだけで失敗メッセージの滞留を判断せず、DLQや処理ログも確認する。