Amazon SQS で利用可能な CloudWatchメトリクス
Amazon SQS は、次のメトリクスをCloudWatchに送信します。
注記
一部のメトリクスでは、Amazon SQS の分散アーキテクチャにより、結果は概算になります。ほとんどの場合、カウントはキュー内の実際のメッセージ数に近い数値になります。
Amazon SQS メトリクス
Amazon SQS は、AWS/SQS 名前空間の Amazon CloudWatch に運用メトリクスを自動的に公開します。これらのメトリクスは、キューのヘルスとパフォーマンスをモニタリングするのに役立ちます。SQS の分散特性により、多くの値は近似値となりますが、ほとんどの運用上の判断に十分な精度があります。
注記
-
すべてのメトリクスは、キューがアクティブな場合にのみ負以外の値を出力します。
-
一部のメトリクス (
SentMessageSizeなど) は、少なくとも 1 つのメッセージが送信されるまで出力されません。
| メトリクス | 説明 | 単位 | 報告動作 | キーノート |
|---|---|---|---|---|
ApproximateAgeOfOldestMessage |
キュー内で最も古い未処理メッセージの経過時間。 | [秒] |
キューにアクティブなメッセージが少なくとも 1 つ含まれている場合に報告されます。 |
|
ApproximateNumberOfGroupsWithInflightMessages |
FIFO のみ。処理中メッセージを含むメッセージグループの数。 | カウント |
FIFO キューがアクティブの場合に報告されます。 |
|
ApproximateNumberOfMessagesDelayed |
キュー内で遅延されており、すぐには読み取ることができないメッセージの数。 |
カウント |
遅延メッセージがキューに存在する場合に報告されます。 |
|
ApproximateNumberOfMessagesNotVisible |
受信されたものの、まだ削除されていない、または期限切れになっていない処理中メッセージの数。 | カウント |
処理中メッセージが存在する場合に報告されます。 |
|
ApproximateNumberOfMessagesVisible |
現在、取得および処理が可能なメッセージの数。 | カウント |
キューがアクティブの場合に報告されます。 |
|
NumberOfEmptyReceives¹ |
メッセージが返されなかった ReceiveMessage API コールの数。 | カウント |
受信オペレーション中に報告されます。 |
|
NumberOfDeduplicatedSentMessages |
FIFO のみ。重複排除され、キューに追加されなかった送信メッセージの数。 | カウント |
重複した MessageDeduplicationId 値またはコンテンツが検出された場合に報告されます。 |
|
NumberOfMessagesDeleted¹ |
キューから正常に削除されたメッセージの数。 |
カウント |
有効な受信ハンドルを持つ各削除リクエストごとにレポートされます。 |
|
NumberOfMessagesReceived¹ |
ReceiveMessage API によって返されたメッセージの数。 | カウント |
受信オペレーション中に報告されます。 |
|
NumberOfMessagesSent¹ |
キューに正常に追加されたメッセージの数。 | カウント |
手動送信が成功するたびにレポートされます。 |
|
SentMessageSize¹ |
キューに正常に送信されたメッセージのサイズ。 |
バイト |
少なくとも 1 つのメッセージが送信されるまで出力されません。 |
|
ApproximateNumberOfNoisyGroups |
フェアキューでノイジーと見なされるメッセージグループの数。ノイジーメッセージグループは、マルチテナントキューにおけるノイジーネイバーテナントを表します。 |
カウント |
キューがアクティブな場合、負以外の値が報告されます。 |
|
ApproximateNumberOfMessagesVisibleInQuietGroups |
ノイジーメッセージグループからのメッセージを除外して表示されるメッセージの数。 |
カウント |
キューがアクティブな場合、負以外の値が報告されます。 |
|
ApproximateNumberOfMessagesNotVisibleInQuietGroups |
ノイジーメッセージグループからのメッセージを除く、処理中メッセージの数。 | カウント |
キューがアクティブな場合、負以外の値が報告されます。 |
|
ApproximateNumberOfMessagesDelayedInQuietGroups |
ノイジーメッセージグループからのメッセージを除外し、遅延してすぐに読み取ることができないメッセージの数。遅延メッセージは、キューが遅延キューとして構成されている場合、またはメッセージが遅延パラメータ付きで送信された場合に発生します。 | カウント |
キューがアクティブな場合、負以外の値が報告されます。 |
|
ApproximateAgeOfOldestMessageInQuietGroups |
ノイジーメッセージグループからのメッセージを除く、キュー内の削除されていない最も古いメッセージの経過時間。 | [秒] |
キューがアクティブな場合、負以外の値が報告されます。 |
|
¹これらのメトリクスはシステムレベルのアクティビティを反映し、再試行、重複、遅延メッセージが含まれる場合があります。メッセージライフサイクルの挙動を考慮せず、生のカウントだけを使用してリアルタイムキューの状態を推定しないでください。
デッドレターキュー (DLQ) と CloudWatch メトリクス
DLQ を使用する場合は、Amazon SQS メトリクスの動作を理解することが重要です。
-
NumberOfMessagesSent– このメトリクスの動作は DLQ によって異なります。-
手動送信 – DLQ に手動で送信されたメッセージは、このメトリクスによってキャプチャされます。
-
自動リドライブ – 処理の失敗によって DLQ に自動的に移動されたメッセージは、このメトリクスではキャプチャされません。その結果、
NumberOfMessagesSentメトリクスとNumberOfMessagesReceivedメトリクスに DLQ の不一致が表示される場合があります。
-
-
DLQ の推奨メトリクス – DLQ の状態をモニタリングするには、
ApproximateNumberOfMessagesVisibleメトリクスを使用します。このメトリクスは、DLQ で現在処理可能なメッセージの数を示します。
フェアキューと CloudWatch メトリクス
フェアキューを使用すると、Amazon SQS は次の追加のメトリクスを出力します。
-
ApproximateNumberOfNoisyGroups -
ApproximateNumberOfMessagesVisibleInQuietGroups -
ApproximateNumberOfMessagesNotVisibleInQuietGroups -
ApproximateNumberOfMessagesDelayedInQuietGroups -
ApproximateAgeOfOldestMessageInQuietGroups
注記
各 QuietGroup メトリクスは同等の標準キューレベルの Approximate メトリクスのサブセットですが、ノイジーグループからメッセージを除外します。
- ノイジーグループ
-
ノイジーメッセージグループは、マルチテナントキューにおけるノイジーネイバーテナントを表します。
- クワイエットグループ
-
ノイジーグループを除くメッセージグループ。
SQS フェアキュー動作の観察
Amazon SQS フェアキューの効果をモニタリングするには、Approximate..InQuietGroups メトリクスを標準のキューレベルのメトリクスと比較します。特定のテナントのトラフィックが急増すると、一般的なキューレベルのメトリクスによって、バックログの増加やメッセージ経過時間が古くなる可能性があります。ただし、クワイエットグループを個別に見ると、を個別に確認することで、ほとんどの非ノイズ系メッセージグループやテナントには影響がないことを特定でき、影響を受けたメッセージグループの総数を推定することができます。
これらの新しいメトリクスは、Amazon SQS フェアキューの動作を把握するうえで有用な概要を提供しますが、どの特定のテナントが負荷を引き起こしているのかを理解することも有益です。Amazon CloudWatch contributor insights を使用すると、上位 N 件のコントリビューターに関するメトリクス、ユニークなコントリビューターの総数、およびその利用状況を確認できます。これは、数千ものテナントを扱うシナリオにおいて特に有用であり、従来型のメトリクスを出力すると高いカーディナリティ (およびコスト) につながる場合でも役立ちます。
フェアキューの設定をモニタリングする例については、GitHub
Amazon SQS メトリクスのディメンション
CloudWatch の Amazon SQS メトリクスは、単一のディメンション QueueName を使用します。すべてのメトリクスデータは、キューの名前でグループ化およびフィルタリングされます。
モニタリングのヒント
キーメトリクスと CloudWatch アラームを使用して SQS を効果的にモニタリングし、キューのバックログを検出し、パフォーマンスを最適化して、サービスの制限内を維持します。
-
ApproximateNumberOfMessagesVisibleに基づいて CloudWatch アラームを設定して、バックログの増加をキャッチします。 -
NumberOfEmptyReceivesをモニタリングしてポーリング頻度を調整し、API コストを削減します。 -
FIFO キューで
ApproximateNumberOfGroupsWithInflightMessagesを使用してスループット制限を診断します。 -
SQS クォータを確認して、メトリクスのしきい値とサービスの制限を理解します。