Amazon SQS で利用可能な CloudWatchメトリクス - Amazon Simple Queue Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SQS で利用可能な CloudWatchメトリクス

Amazon SQS は、次のメトリクスをCloudWatchに送信します。

注記

一部のメトリクスでは、Amazon SQS の分散アーキテクチャにより、結果は概算になります。ほとんどの場合、カウントはキュー内の実際のメッセージ数に近い数値になります。

Amazon SQSメトリクス

Amazon SQS は、 AWS/SQS名前空間の Amazon CloudWatch に運用メトリクスを自動的に発行します。これらのメトリクスは、キューのヘルスとパフォーマンスをモニタリングするのに役立ちます。SQS は分散型であるため、多くの値は概算ですが、ほとんどの運用上の決定には十分正確です。

注記
  • すべてのメトリクスは、キューがアクティブな場合にのみ負以外の値を出力します。

  • 一部のメトリクス ( などSentMessageSize) は、少なくとも 1 つのメッセージが送信されるまで出力されません。

メトリクス 説明 単位 レポート動作 キーノート
ApproximateAgeOfOldestMessage キュー内の最も古い未処理メッセージの経過時間。

[秒]

キューにアクティブなメッセージが少なくとも 1 つ含まれている場合に報告されます。
  • 標準キューの場合、メッセージが 3 回以上受信され、削除されない場合、SQS はキューの背面に移動します。次に、メトリクスは受信しきい値を超えていない次のメッセージの経過時間を反映します。この順序変更は、リドライブポリシーが設定されている場合でも発生します。

  • ポイズンピルメッセージ (繰り返し受信されたが削除されていないメッセージ) は、正常に処理されるまでこのメトリクスから除外されます。

  • を超えた後にメッセージが DLQ に移動するとmaxReceiveCount、経過時間はリセットされます。この場合、DLQ の メトリクスには、メッセージが最初に送信された時刻ではなく、メッセージが移動された時刻が反映されます。

  • FIFO キューは、順序を維持するためにメッセージの順序を変更しません。失敗したメッセージは、メッセージグループが削除されるか期限切れになるまでブロックします。DLQ が設定されている場合、メッセージは受信しきい値が満たされた後に送信されます。

ApproximateNumberOfGroupsWithInflightMessages FIFO のみ。1 つ以上の処理中のメッセージを含むメッセージグループの数。

カウント

FIFO キューがアクティブである場合に報告されます。
  • メッセージは、コンシューマーがキューから受信したが、まだ削除または期限切れになっていない場合、処理中と見なされます。

  • このメトリクスは、FIFO キューのスループットのトラブルシューティングと最適化に役立ちます。通常、高い値は強い同時実行数を示します。

  • キューのバックログが大きく、この値が小さい場合は、コンシューマーをスケーリングするか、アクティブなメッセージグループの数を増やすことを検討してください。

  • スループットと処理中の制限については、「」を参照してくださいAmazon SQS のクォータ

ApproximateNumberOfMessagesDelayed

キュー内で遅延し、すぐに取得できないメッセージの数。

カウント

遅延メッセージがキューに存在する場合に報告されます。
  • デフォルトの遅延で設定されたキューと、 DelaySecondsパラメータで送信された個々のメッセージに適用されます。

  • 遅延メッセージは、遅延期間が終了するまでコンシューマーから非表示のままになり、認識されたキューのバックログまたはスループットに影響する可能性があります。

ApproximateNumberOfMessagesNotVisible 受信されたが、まだ削除または期限切れになっていない処理中のメッセージの数。

カウント

処理中のメッセージが存在する場合に報告されます。
  • メッセージは、ReceiveMessageAPI 経由でコンシューマーに送信されると、処理中の状態になります。

  • これらのメッセージは、可視性タイムアウトウィンドウ中に他のコンシューマーから一時的に非表示になります。

  • このメトリクスを使用して、メッセージ処理の遅延やコンシューマーのスタックを追跡します。

ApproximateNumberOfMessagesVisible 現在取得と処理に使用できるメッセージの数。

カウント

キューがアクティブの場合に報告されます。
  • キュー内の現在の処理バックログを反映します。

  • 蓄積できるメッセージの数にはハード制限はありませんが、キューで設定された保持期間が適用されます。

  • 値が一貫して高い場合は、プロビジョニング不足のコンシューマーや処理ロジックがスタックしている可能性があります。

NumberOfEmptyReceives1 メッセージが返されなかった ReceiveMessage API コールの数。

カウント

受信オペレーション中に報告されます。
  • このメトリクスは、ポーリング動作の非効率性や十分に活用されていないコンシューマーインスタンスを特定するのに役立ちます。

  • キューが空の場合、コンシューマーがショートポーリングを使用する場合、またはメッセージが生成されたよりも速く処理されている場合、高い値が発生することがあります。

  • これはキューの状態を正確に示すものではありません。サービス側の動作を反映し、再試行が含まれる場合があります。

NumberOfDeduplicatedSentMessages FIFO のみ。重複排除され、キューに追加されなかった送信メッセージの数。

カウント

重複したMessageDeduplicationId値またはコンテンツが検出された場合に報告されます。
  • SQS は、 MessageDeduplicationIdまたはコンテンツベースのハッシュ (有効になっている場合) に基づいてメッセージを重複排除します。

  • 値が大きいと、プロデューサーが 5 分間の重複排除ウィンドウ内で同じメッセージを繰り返し送信している可能性があります。

  • このメトリクスを使用して冗長なプロデューサーロジックをトラブルシューティングするか、重複排除が意図したとおりに機能していることを確認します。

NumberOfMessagesDeleted1

キューから正常に削除されたメッセージの数。

カウント

有効な受信ハンドルを持つ削除リクエストごとにレポートされます。
  • このメトリクスは、同じメッセージが複数回削除された場合でも、成功したすべての削除オペレーションをカウントします。

  • higher-than-expected一般的な理由は次のとおりです。

    • 可視性タイムアウトが期限切れになり、メッセージが再度受信された後、異なる受信ハンドルを使用して同じメッセージを複数回削除します。

    • 同じ受信ハンドルを使用した重複削除は、成功ステータスを返し、メトリクスを増分します。

  • このメトリクスを使用してメッセージ処理の成功を追跡しますが、一意の削除済みメッセージの正確な数として扱わないでください。

NumberOfMessagesReceived1 ReceiveMessage API によって返されたメッセージの数。

カウント

受信オペレーション中に報告されます。
  • これには、可視性タイムアウトの有効期限が切れたために後でキューに返されるメッセージを含む、コンシューマーに返されるすべてのメッセージが含まれます。

  • 削除しない場合、1 つのメッセージを複数回受信できます。これにより、このメトリクスが送信されたメッセージの数を超える可能性があります。

  • これを使用してコンシューマーのアクティビティを追跡しますが、処理された一意のメッセージの数として扱いません。

NumberOfMessagesSent1 キューに正常に追加されたメッセージの数。

カウント

手動送信が成功するたびにレポートされます。
  • DLQ を直接ターゲットとする呼び出しを含め、 SendMessageまたは への手動呼び出しSendMessageBatchがカウントされます。

  • を超えた後に DLQ に自動的に移動されるメッセージmaxReceiveCountは、このメトリクスに含まれません。

  • その結果、 は よりも低いNumberOfMessagesSent場合がありますNumberOfMessagesReceived。特に、リドライブポリシーが多くのメッセージを背後にある DLQsに移動している場合です。

SentMessageSize1

キューに正常に送信されたメッセージのサイズ。

バイト

少なくとも 1 つのメッセージが送信されるまで出力されません。
  • このメトリクスは、キューが最初のメッセージを受信するまで CloudWatch コンソールに表示されません。

  • このメトリクスを使用して、各メッセージのサイズをバイト単位で追跡します。これは、ペイロードの傾向の分析やスループットコストの見積もりに役立ちます。

  • SQS の最大メッセージサイズは 1 MiB です。

ApproximateNumberOfNoisyGroups

公平キューでノイズが多いと見なされるメッセージグループの数。ノイズの多いメッセージグループは、マルチテナントキューのノイズの多い近隣テナントを表します。

カウント

キューがアクティブの場合、負以外の値がレポートされます。
  • 不均衡なリソースを消費するメッセージグループを追跡することで、マルチテナント環境で発生する可能性のあるノイズの多い近隣問題を特定するのに役立ちます。

  • このメトリクスを使用して、ノイズの多いグループの数が許容しきい値を超えたときにトリガーされるアラームを設定します。これは、キューの公平性に関する潜在的な問題を示します。

ApproximateNumberOfMessagesVisibleInQuietGroups

ノイズの多いメッセージグループからのメッセージを除外して表示されるメッセージの数。

カウント

キューがアクティブな場合、負以外の値がレポートされます
  • ノイズの多い近隣からのメッセージを除く、標準レートのメッセージグループのキューバックログを可視化します。

  • ノイズの多い近隣の影響を除外することで、一般的なメッセージグループの真の処理バックログを特定するのに役立ちます。

ApproximateNumberOfMessagesNotVisibleInQuietGroups ノイズの多いメッセージグループからのメッセージを除く、進行中のメッセージの数。

カウント

キューがアクティブな場合、負以外の値がレポートされます
  • 適切に動作しているメッセージグループからの処理中のメッセージ (処理されているが、まだ削除されていない) を追跡します。

  • このメトリクスを使用して、通常のメッセージグループの処理スループットをモニタリングし、ノイズの多い近隣によって引き起こされない処理のボトルネックを検出します。

ApproximateNumberOfMessagesDelayedInQuietGroups 遅延したノイズの多いメッセージグループからのメッセージを除外し、すぐに読み取ることができないメッセージの数。遅延メッセージは、キューが遅延キューとして設定されている場合、または遅延パラメータを使用してメッセージを送信した場合に発生します。

カウント

キューがアクティブな場合、負以外の値が報告されます
  • (大量のグループやノイズの多いグループではなく) 通常のスループットパターンまたは予想されるスループットパターンを持つメッセージグループからの遅延メッセージバックログをモニタリングするのに役立ちます。

  • 一般的なワークロードの将来の処理要件と容量計画を理解するのに役立ちます。

ApproximateAgeOfOldestMessageInQuietGroups ノイズの多いメッセージグループからのメッセージを除く、キュー内の削除されていない最も古いメッセージの経過時間。

[秒]

キューがアクティブな場合、負以外の値がレポートされます。
  • SLA コンプライアンスをモニタリングし、通常のスループットパターンまたは予想されるスループットパターンを持つメッセージグループの処理ボトルネックを検出するために使用されます (メトリクスを歪める可能性のある大量のメッセージグループやノイズの多いメッセージグループとは異なります)。

  • このメトリクスを使用して、ノイズの多い近隣からの人為的に古くなったメッセージを無視するメッセージ処理タイムアウトのアラームを設定します。

1 これらのメトリクスはシステムレベルのアクティビティを反映し、再試行、重複、遅延メッセージが含まれる場合があります。raw カウントを使用して、メッセージライフサイクルの動作を考慮せずにリアルタイムキューの状態を推定しないでください。

デッドレターキュー (DLQs) と CloudWatch メトリクス

DLQs を使用する場合は、Amazon SQS メトリクスの動作を理解することが重要です。

  • NumberOfMessagesSent – このメトリクスの動作は DLQsによって異なります。

    • 手動送信 – DLQ に手動で送信されたメッセージは、このメトリクスによってキャプチャされます。

    • 自動再処理 – 処理の失敗によって DLQ に自動的に移動されたメッセージは、このメトリクスではキャプチャされません。その結果、 NumberOfMessagesSentおよび NumberOfMessagesReceivedメトリクスに DLQsの不一致が表示される場合があります。

  • DLQs の推奨メトリクス – DLQ の状態をモニタリングするには、 ApproximateNumberOfMessagesVisibleメトリクスを使用します。このメトリクスは、DLQ で現在処理可能なメッセージの数を示します。

フェアキューと CloudWatch メトリクス

公平キューを使用すると、Amazon SQS は次の追加のメトリクスを出力します。

  • ApproximateNumberOfNoisyGroups

  • ApproximateNumberOfMessagesVisibleInQuietGroups

  • ApproximateNumberOfMessagesNotVisibleInQuietGroups

  • ApproximateNumberOfMessagesDelayedInQuietGroups

  • ApproximateAgeOfOldestMessageInQuietGroups

注記

QuietGroupメトリクスは同等の標準キューレベルのApproximateメトリクスのサブセットですが、ノイズの多い近隣グループからメッセージを除外します。

ノイズの多いグループ

ノイズの多いメッセージグループは、マルチテナントキューのノイズの多い近隣テナントを表します。

クワイエットグループ

ノイズの多いグループを除くメッセージグループ。

SQS 公平キューの動作を観察する

Amazon SQS 公平キューの効果をモニタリングするには、Approximate..InQuietGroupsメトリクスを標準のキューレベルのメトリクスと比較します。特定のテナントのトラフィックが急増すると、一般的なキューレベルのメトリクスで、バックログの増加やメッセージ経過時間が古くなる可能性があります。ただし、クワイエットグループを個別に見ると、ノイズのないメッセージグループやテナントのほとんどが影響を受けていないことを特定し、影響を受けるメッセージグループの総数の見積もりを提供できます。

これらの新しいメトリクスは、Amazon SQS 公平キューの動作に関する適切な概要を提供しますが、どの特定のテナントが負荷を引き起こしているかを理解することは有益です。Amazon CloudWatch 寄稿者インサイトを使用すると、上位 1 位の寄稿者、一意の寄稿者の総数、およびその使用状況に関するメトリクスを表示できます。これは、従来のメトリクスを出力するときにカーディナリティデータ (およびコスト) が高くなる数千のテナントを扱うシナリオで特に役立ちます。

公平キューの設定をモニタリングする例については、GitHub のサンプルを参照してください。

Amazon SQS メトリクスのディメンション

CloudWatch の Amazon SQS メトリクスは、単一のディメンション を使用しますQueueName。すべてのメトリクスデータは、キューの名前でグループ化およびフィルタリングされます。

モニタリングのヒント

キーメトリクスと CloudWatch アラームを使用して SQS を効果的にモニタリングし、キューのバックログを検出し、パフォーマンスを最適化して、サービスの制限内を維持します。

  • に基づいて CloudWatch アラームを設定ApproximateNumberOfMessagesVisibleして、バックログの増加をキャッチします。

  • をモニタリングNumberOfEmptyReceivesしてポーリング頻度を調整し、API コストを削減します。

  • FIFO キューApproximateNumberOfGroupsWithInflightMessagesで を使用してスループット制限を診断します。

  • SQS クォータを確認して、メトリクスのしきい値とサービスの制限を理解します。