Message Service (MNS) は、メッセージトレーシング機能によって各メッセージのライフサイクル全体 (送信、サブスクリプションマッチング、プッシュ、消費) をタイムスタンプ、結果、プロデューサー/コンシューマーの ID とともに追跡し、トラブルシューティングを支援します。
ユースケース
メッセージトレース機能は、以下の用途に役立ちます。
-
メッセージ配信の確認:メッセージがキューまたはトピックに到達し、消費されたかどうかを確認します。
-
重複消費のトラブルシューティング:メッセージの完全な消費レコード (時刻、コンシューマーのアイデンティティ、各消費の結果) を表示します。
-
プッシュの失敗のトラブルシューティング:トピックサブスクリプションのプッシュ (HTTP、メールなど) の詳細なステータスと失敗理由を表示します。
-
メッセージレイテンシーのトラブルシューティング:各ライフサイクルステージのタイムスタンプを表示して、遅延を特定します。
-
スケジュールされたメッセージのステータス確認:スケジュールされたメッセージが配信時刻に達したかどうかを確認します。
-
プロデューサーとコンシューマーのアイデンティティの照会:トラブルシューティングのために、プロデューサーの IP、AccessKey、およびコンシューマーの IP を表示します。
トレースパラメーター
キューメッセージトレース
キューメッセージトレースには、送信情報、メッセージ情報、消費情報の 3 つのセクションがあります。
メッセージの送信
標準送信
|
パラメーター |
説明 |
|
メッセージソース |
メッセージをキューに直接送信するプロデューサーです。 |
|
メソッド |
SendMessage や BatchSendMessage などの API オペレーションです。 |
|
プロデューサー IP |
送信クライアントの IP アドレスです。 |
|
AccessKey |
メッセージの送信に使用された AccessKey です。 |
|
送信時刻 |
メッセージがキューに到着したときのサーバー時刻です。 |
|
結果 |
「Success」 または特定のエラーメッセージです。 |
デッドレター
メッセージがデッドレターキューに移動すると、新しいトレースが生成されます。
|
パラメーター |
説明 |
|
メッセージソース |
定数: Dead-Letter |
|
元のキュー |
メッセージの元のキューの名前です。 |
|
元のキューのメッセージ ID |
元のキューにおけるメッセージ ID です。 |
|
送信時刻 |
メッセージがデッドレターキューに移動した時刻です。 |
|
結果 |
「Success」 または特定のエラーメッセージです。 |
サブスクリプションプッシュ
トピックがサブスクリプションを通じてメッセージをキューにプッシュするときに生成されます。
|
パラメーター |
説明 |
|
メッセージソース |
定数: Topic Queue Subscription |
|
トピック |
メッセージをプッシュしたトピックの名前です。 |
|
サブスクリプション |
メッセージをプッシュしたサブスクリプションの名前です。 |
|
元のメッセージ ID |
トピック内のメッセージ ID です。 |
|
送信時刻 |
メッセージがキューにプッシュされた時刻です。 |
|
結果 |
「Success」 または特定のエラーメッセージです。 |
その他のクラウドサービス
EventBridge がサブスクリプションを通じてメッセージをキューにプッシュするときに生成されます。
|
パラメーター |
説明 |
|
メッセージソース |
定数: other cloud services |
|
メソッド |
定数: Notify |
|
送信時刻 |
メッセージがキューにプッシュされた時刻です。 |
|
結果 |
「Success」 または特定のエラーメッセージです。 |
メッセージ情報
標準メッセージ
|
パラメーター |
説明 |
|
メッセージタイプ |
値:標準メッセージ |
|
メッセージ ID |
メッセージの一意の識別子です。 |
|
キュー |
メッセージが含まれるキューの名前です。 |
|
メッセージ保持期間 |
最大保持期間です。キューの |
|
可視性タイムアウト |
取得したメッセージが他のコンシューマーから見えなくなる期間です。キューの |
スケジュールされたメッセージ
|
パラメーター |
説明 |
|
メッセージタイプ |
値:スケジュールされたメッセージ |
|
メッセージ ID |
メッセージの一意の識別子です。 |
|
キュー |
メッセージが含まれるキューの名前です。 |
|
メッセージ保持期間 |
最大保持期間です。キューの |
|
可視性タイムアウト |
取得したメッセージが他のコンシューマーから見えなくなる期間です。キューの |
|
配信遅延 |
メッセージの配信を遅延させる秒数です。 |
|
配信予定時刻 |
メッセージが消費可能になる特定の時刻です。 |
消費
キューのメッセージの消費トレースは消費セッションごとにグループ化され、各セッションは ReceiptHandle で識別されます。
|
パラメータ |
説明 |
|
結果 |
消費セッションの最終結果です。次の値があります:
|
|
コンシューマー IP |
メッセージを受信または操作したクライアントの IP アドレスです。 |
|
AccessKey |
メッセージの操作に使用した AccessKey です。 |
|
ReceiptHandle |
レシートハンドルです。メッセージの削除、または可視性タイムアウトの変更に使用します。 |
|
操作時刻 |
オペレーションのサーバー時刻です。 |
|
オペレーション |
API オペレーションです。次の値があります:
|
-
ReceiveMessageまたはBatchReceiveMessageを呼び出すたびに新しいハンドルが生成されるため、メッセージには複数のReceiptHandle値が存在する場合があります。 -
コンシューマーがメッセージの可視性タイムアウトの期限が切れる前にメッセージを削除した場合、消費セッションの結果は Success になります。
-
コンシューマーがメッセージを受信したものの削除しなかった場合、メッセージの可視性タイムアウトの期限が切れた後に、メッセージを再度消費できます。メッセージを再度受信すると、新しい
ReceiptHandleが生成されます。 -
期限切れの
ReceiptHandleを使用してメッセージを操作すると、404 エラーが返されます。
トピックメッセージトレース
トピックメッセージトレースは、「送信情報」、「サブスクリプションマッチング情報」、「プッシュ情報」の 3 つのセクションで構成されます。
送信情報
標準送信
|
パラメーター |
説明 |
|
メッセージソース |
プロデューサーがメッセージをトピックに直接発行します。 |
|
メソッド |
API オペレーションタイプ: PublishMessage |
|
プロデューサー IP |
メッセージを発行したクライアントの IP アドレス。 |
|
AccessKey |
メッセージの発行に使用する AccessKey。 |
|
送信時刻 |
メッセージがトピックに到着したサーバー時刻。 |
|
結果 |
発行操作の結果。「Success」 または特定のエラーメッセージが表示されます。 |
その他のクラウドサービス
別のクラウドサービスがメッセージをトピックに発行すると生成されます。
|
パラメーター |
説明 |
|
メッセージソース |
メッセージが別のクラウドサービスから来たことを示します。 |
|
メソッド |
API オペレーションタイプ: PublishMessage |
|
送信時刻 |
メッセージがトピックに発行された時刻。 |
|
結果 |
発行操作の結果。「Success」 または特定のエラーメッセージが表示されます。 |
サブスクリプションマッチング
トピックがメッセージを受信すると、FilterTag によってサブスクリプションを照合し、一致した各サブスクリプションにメッセージをプッシュします。
|
パラメーター |
説明 |
|
メッセージ ID |
メッセージの一意の識別子。 |
|
タグ |
サブスクリプションフィルタリングに使用するメッセージのタグ。 |
|
サブスクリプション名 |
一致したサブスクリプションの名前。 |
|
サブスクリプションタイプ |
サブスクリプションのエンドポイントのタイプ。指定できる値は次のとおりです:
|
プッシュ情報
キューサブスクリプション
|
パラメーター |
説明 |
|
メッセージ ID |
メッセージがキューに入ったときに割り当てられる新しい ID。 |
|
消費結果 |
プッシュが成功したかどうかを示します。「Success」 または特定のエラーメッセージが表示されます。 |
|
プッシュ時刻 |
プッシュが開始された時刻。 |
|
処理時間 |
プッシュ所要時間 (ミリ秒)。 |
その他のサブスクリプション
|
パラメーター |
説明 |
|
プッシュ結果 |
プッシュのステータスコードと結果。例:
|
|
プッシュ時刻 |
プッシュが開始された時刻。 |
|
処理時間 |
プッシュ所要時間 (ミリ秒)。 |
使用制限
-
メッセージトレース: メッセージトレースは、デフォルトで無効になっています。メッセージトレース ページで有効にできます。
-
クエリ時間範囲:クエリは最大 3 日間の範囲を対象とし、過去 15 日以内に開始する必要があります。
課金
課金の詳細については、「メッセージトレースのコスト」をご参照ください。
メッセージトレースの保持期間
メッセージトレースデータは 15 日間保持されます。この期間を過ぎると自動的に削除され、クエリできなくなります。
クエリメソッド
ApsaraMQ for MNS には、メッセージトレースをクエリするための 5 つのメソッドがあります。
|
クエリメソッド |
ユースケース |
結果 |
|
メッセージ ID によるクエリ |
メッセージ ID がわかっていて、そのメッセージの完全なトレースを検索する場合。 |
単一のメッセージトレースを返します。 |
|
リクエスト ID によるクエリ |
API 呼び出しのリクエスト ID がわかっていて、関連するメッセージを検索する場合。 |
リクエストに関連するメッセージトレースを返します。 |
|
キュー名によるクエリ |
一定期間におけるキューのすべてのメッセージトレースを表示する場合。 |
指定した時間範囲内のキューのメッセージトレースを返します。 |
|
トピック名によるクエリ |
一定期間におけるトピックのすべてのメッセージトレースを表示する場合。 |
指定した時間範囲内のトピックのメッセージトレースを返します。 |
|
サブスクリプション名によるクエリ |
一定期間にサブスクリプションにプッシュされたすべてのメッセージトレースを表示する場合。 |
指定した時間範囲内にサブスクリプションにプッシュされたメッセージトレースを返します。 |
-
メッセージ ID がわかっている場合は、[メッセージ ID によるクエリ] を使用すると、高速かつ正確に結果を取得できます。
-
一定期間のメッセージの問題をトラブルシューティングするには、[キュー名によるクエリ]、[トピック名によるクエリ]、または [サブスクリプション名によるクエリ] を使用してください。
-
バッチ送信またはバッチ消費に関連する API 呼び出しの問題をトラブルシューティングするには、[リクエスト ID によるクエリ] を使用してください。
手順
メッセージトレースのクエリ
- MNS コンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
- ナビゲーションバーの上部でリージョンを選択します。
-
メッセージトレースが無効 をクリックして、メッセージトレースを有効にします。
-
[メッセージトレース] ページで、クエリメソッドを選択し、検索条件を入力します。
-
メッセージ ID によるクエリ:メッセージ ID を入力し、[クエリ] をクリックします。
-
RequestID によるクエリ:API リクエストの RequestID を入力し、[クエリ] をクリックします。
-
キュー名によるクエリ:キュー名を選択し、過去 15 日以内の開始時刻を選択し (期間は 3 日を超えられません)、[クエリ] をクリックします。
-
トピック名によるクエリ:トピック名を選択し、過去 15 日以内の開始時刻を選択し (期間は 3 日を超えられません)、[クエリ] をクリックします。
-
サブスクリプション名によるクエリ:トピックとサブスクリプション名を選択し、過去 15 日以内の開始時刻を選択し (期間は 3 日を超えられません)、[クエリ] をクリックします。
-
-
クエリ結果で、対象のメッセージを見つけ、[操作] 列で [詳細] をクリックします。
-
メッセージトレースの詳細ページに、メッセージの完全なトレースが表示されます。
-
キューメッセージトレースの詳細:送信情報、メッセージ情報、消費情報があります。
-
送信情報:メッセージソース、送信メソッド、プロデューサー IP アドレス、AccessKey、到着時刻、送信結果があります。
-
メッセージ情報:メッセージ ID、キュー名、保持期間、可視性タイムアウトなどが含まれます。スケジュールされたメッセージの場合は、遅延時間と配信予定時刻も表示されます。
-
消費情報:メッセージの消費レコードは ReceiptHandle ごとにグループ化されます。ReceiptHandle を展開すると、その消費セッションのすべてのオペレーション (受信、削除、メッセージの可視性の変更) の時刻、コンシューマー IP アドレス、結果が表示されます。
-
-
トピックメッセージトレースの詳細:送信情報、サブスクリプションマッチング情報、プッシュ情報があります。
-
送信情報:送信メソッド、プロデューサー IP アドレス、AccessKey、到着時刻、送信結果があります。
-
サブスクリプションマッチング情報:メッセージ ID、タグ、マッチングしたサブスクリプション名、サブスクリプションタイプがあります。
-
プッシュ情報:各サブスクリプションのプッシュ結果、プッシュ時刻などが含まれます。キューサブスクリプションの場合は、プッシュ後の新しいメッセージ ID が表示されます。HTTP、メール、または SMS サブスクリプションの場合は、プッシュのステータスコードと処理時間が表示されます。
-
-
-
(オプション) キューサブスクリプションによってメッセージがキューにプッシュされた後のメッセージトレースを表示するには、[プッシュ情報] セクションの [メッセージ ID] リンクをクリックして、対応するキューメッセージのトレース詳細を表示します。
このページには、そのキューメッセージの 送信情報、メッセージ情報、および 消費情報 が表示されます。
よくある質問
Q: メッセージトレースが見つからないのはなぜですか?
A: 考えられる原因は次のとおりです。
-
メッセージトレースのデータは 15 日後に削除されます。
-
指定された時間範囲が正しくありません。時間範囲を拡大してみてください。
-
メッセージ ID またはリクエスト ID が正しく入力されていません。ID を確認して、クエリを再試行してください。
Q: メッセージトレースの「未応答」ステータスはどういう意味ですか?
A: コンシューマーがメッセージを受信しましたが、削除または可視性タイムアウトの変更を行いませんでした。タイムアウトすると、メッセージは再び利用可能になります。コンシューマー アプリケーションがメッセージを正しく処理および削除していることを確認してください。
Q: 単一のメッセージが複数のレシートハンドルを持つのはなぜですか?
A: ReceiveMessage または BatchReceiveMessage の呼び出しごとに、新しいレシートハンドルが生成されます。メッセージが複数回取得された場合 (たとえば、可視性タイムアウトが切れた後) 、取得ごとに異なるレシートハンドルが生成されます。
Q: メッセージトレースは、メッセージの送受信のパフォーマンスに影響しますか?
A: いいえ。トレースの記録は非同期で行われるため、メッセージの送受信のパフォーマンスや信頼性には影響しません。記録が失敗しても、正常な操作に影響はありません。