Simple Message Queue (旧称:MNS) は、メッセージトレース機能を提供します。メッセージトレースを使用して、メッセージの完全なパスをトレースできます。このパスには、送信、サブスクリプションのマッチング、プッシュ、消費などの各ステップの時間、結果、プロデューサー、コンシューマーなどの詳細が含まれます。この機能は、メッセージの送受信に関する問題を迅速にトラブルシューティングするのに役立ちます。
シナリオ
Simple Message Queue (旧称:MNS) のメッセージトレースは、以下の問題に対処するのに役立ちます。
メッセージが正常に送信されたかどうかを確認する: メッセージが受信されなかった疑いがある場合、メッセージトレースを使用して、メッセージがキューまたは Topic に送信され、消費されたかどうかを確認できます。
メッセージの繰り返し消費のトラブルシューティング: 同じメッセージが複数回消費されていることがわかった場合、メッセージトレースを使用して完全な消費レコードを表示できます。このレコードには、各消費の時間、コンシューマー ID、および結果が含まれます。
Topic プッシュ失敗のトラブルシューティング: HTTP サブスクリプション、メールサブスクリプション、またはその他のエンドポイントへのプッシュが失敗した場合、メッセージトレースを使用して、詳細なプッシュステータスと失敗の理由を表示できます。
メッセージ遅延のトラブルシューティング: メッセージの消費遅延が高いことに気付いた場合、メッセージトレースを使用して各段階で費やされた時間を表示し、遅延の原因を特定できます。
スケジュールされたメッセージの状態を確認する: スケジュールされたメッセージがプリセットされた配信時間に達したかどうかを確認できます。
プロデューサーとコンシューマーの ID をクエリする: 送信者の IP アドレスと AccessKey、およびコンシューマーの IP アドレスを表示できます。これは、問題をさらに調査するのに役立ちます。
トレースパラメーターの説明
キューメッセージトレース
キューメッセージトレースには、送信情報、メッセージ情報、消費情報の 3 つの部分が含まれます。
送信情報
通常の送信シナリオ
パラメーター | 説明 |
メッセージソース | メッセージソースはプロデューサーです。これは、プロデューサーがメッセージを直接キューに送信したことを意味します。 |
メソッド | SendMessage や BatchSendMessage などの API 操作タイプ。 |
プロデューサー IP | メッセージを送信したクライアントの IP アドレス。 |
AccessKey | メッセージの送信に使用された AccessKey。 |
送信時刻 | メッセージがキューに到着したサーバー時刻。 |
結果 | 送信結果。「成功」または特定のエラーメッセージが表示されます。 |
デッドレターシナリオ
メッセージがソースキューからデッドレターキューに移動すると、新しい送信トレースレコードが生成されます。
パラメーター | 説明 |
メッセージソース | 定数: デッドレター |
ソースキュー | 元のキューの名前 |
ソースキューメッセージ ID | ソースキュー内のメッセージのメッセージ ID。 |
送信時刻 | メッセージがデッドレターキューに入った時刻。 |
結果 | 送信結果。「成功」または特定のエラーメッセージが表示されます。 |
サブスクリプションプッシュシナリオ
Topic がキューサブスクリプションを介してキューにメッセージをプッシュすると、送信トレースレコードが生成されます。
パラメーター | 説明 |
メッセージソース | 定数: Topic キューサブスクリプション |
Topic | メッセージをプッシュした Topic の名前。 |
サブスクリプション | メッセージをプッシュしたサブスクリプションの名前。 |
ソースメッセージ ID | Topic 内のメッセージのメッセージ ID。 |
送信時刻 | メッセージがキューにプッシュされた時刻。 |
結果 | 送信結果。「成功」または特定のエラーメッセージが表示されます。 |
他のクラウドプロダクトのシナリオ
イベント通知がキューサブスクリプションを介してキューにメッセージをプッシュすると、送信トレースレコードが生成されます。
パラメーター | 説明 |
メッセージソース | 定数: 他のクラウドプロダクト |
メソッド | 定数: Notify |
送信時刻 | メッセージがキューにプッシュされた時刻。 |
結果 | 送信結果。「成功」または特定のエラーメッセージが表示されます。 |
メッセージ情報
通常メッセージ
パラメーター | 説明 |
メッセージタイプ | 定数: 通常メッセージ |
メッセージ ID | メッセージの一意の識別子。 |
キュー | メッセージが配置されているキューの名前。 |
ストレージ期間 | メッセージがキューに保存される最大時間。これはキューの MessageRetentionPeriod プロパティに対応します。 |
可視性タイムアウト期間 | メッセージが消費された後に非表示になるデフォルトの期間。これはキューの VisibilityTimeout プロパティに対応します。 |
スケジュールされたメッセージ
パラメーター | 説明 |
メッセージタイプ | 定数: スケジュールされたメッセージ |
メッセージ ID | メッセージの一意の識別子。 |
キュー | メッセージが配置されているキューの名前。 |
ストレージ期間 | メッセージがキューに保存される最大時間。これはキューの MessageRetentionPeriod プロパティに対応します。 |
可視性タイムアウト期間 | メッセージが消費された後に非表示になるデフォルトの期間。これはキューの VisibilityTimeout プロパティに対応します。 |
スケジュール期間 | メッセージの遅延期間 (秒単位)。 |
スケジュール終了時刻 | メッセージが消費可能になるプリセット時刻。 |
消費情報
キューのメッセージ消費トレースは ReceiptHandle ごとにグループ化されます。各 ReceiptHandle は、メッセージの 1 つの消費セッションを表します。
パラメーター | 説明 |
現在の結果 | 現在の消費セッションの最終結果。結果には以下が含まれますが、これらに限定されません。
|
コンシューマー IP | メッセージを受信または操作したクライアントの IP アドレス。 |
AccessKey | メッセージの操作に使用された AccessKey。 |
ReceiptHandle | メッセージハンドル。メッセージの削除やメッセージの可視性の変更に使用します。 |
操作時刻 | 操作が実行されたサーバー時刻。 |
操作 | 実行された API 操作。操作には以下が含まれます。
|
単一のメッセージは複数の ReceiptHandle を持つことができます。ReceiveMessage または BatchReceiveMessage 操作が呼び出されるたびに、新しい ReceiptHandle が生成されます。
コンシューマーが可視性タイムアウト期間が切れる前にメッセージを削除した場合、消費セッションの結果は「成功」になります。
コンシューマーがメッセージを取得しても削除しない場合、可視性タイムアウト期間が経過すると、メッセージは再び消費可能になります。これにより、新しい ReceiptHandle が生成されます。
期限切れの ReceiptHandle を使用してメッセージを操作すると、404 エラーが返されます。
Topic メッセージトレース
Topic メッセージトレースには、送信情報、サブスクリプションマッチ情報、プッシュ情報の 3 つの部分が含まれます。
送信情報
通常の送信シナリオ
パラメーター | 説明 |
メッセージソース | メッセージソースはプロデューサーです。これは、プロデューサーがメッセージを直接 Topic に送信したことを意味します。 |
メソッド | API 操作タイプ、PublishMessage。 |
プロデューサー IP | メッセージを送信したクライアントの IP アドレス。 |
AccessKey | メッセージの送信に使用された AccessKey。 |
送信時刻 | メッセージが Topic に到着したサーバー時刻。 |
結果 | 送信結果。「成功」または特定のエラーメッセージが表示されます。 |
他のクラウドプロダクトのシナリオ
イベント通知がキューサブスクリプションを介してキューにメッセージをプッシュすると、送信トレースレコードが生成されます。
パラメーター | 説明 |
メッセージソース | 定数: 他のクラウドプロダクト |
メソッド | API 操作タイプ、PublishMessage。 |
送信時刻 | メッセージが Topic にプッシュされた時刻。 |
結果 | 送信結果。「成功」または特定のエラーメッセージが表示されます。 |
サブスクリプションマッチ情報
Topic がメッセージを受信した後、フィルター条件 (FilterTag) に基づいてサブスクリプションを照合し、一致するサブスクリプションにメッセージをプッシュします。
パラメーター | 説明 |
メッセージ ID | メッセージの一意の識別子。 |
タグ | メッセージのタグ。サブスクリプションのフィルタリングに使用されます。 |
サブスクリプション名 | 一致したサブスクリプションの名前。 |
サブスクリプションタイプ | サブスクリプションのエンドポイントタイプ。タイプには以下が含まれます。
|
プッシュ情報
キューサブスクリプション
パラメーター | 説明 |
メッセージ ID | メッセージがキューにプッシュされた後の新しいメッセージ ID。 |
消費結果 | プッシュが成功したかどうかを示します。「成功」または特定のエラーメッセージが表示されます。 |
プッシュ時刻 | プッシュが開始された時刻。 |
処理時間 | プッシュにかかった時間 (ミリ秒単位)。 |
その他のサブスクリプション (HTTP/メール/Alibaba Cloud SMS)
パラメーター | 説明 |
プッシュ結果 | プッシュの状態コードと結果。コードには以下が含まれます。
|
プッシュ時刻 | プッシュが開始された時刻。 |
処理時間 | プッシュにかかった時間 (ミリ秒単位)。 |
制限
メッセージトレース: この機能はデフォルトで無効になっています。[メッセージトレース] ページで有効にできます。
クエリ時間範囲: 開始時刻は過去 15 日以内である必要があります。各クエリは最大 3 日間を対象にできます。
課金の説明
詳細については、「メッセージトレース料金」をご参照ください。
メッセージトレースのストレージ期間
メッセージトレースデータは 15 日間保存されます。15 日より古いトレースデータは自動的に削除され、クエリできません。
クエリメソッド
Simple Message Queue (旧称:MNS) は、メッセージトレースをクエリするための 5 つのメソッドを提供します。要件に応じて適切なメソッドを選択できます。
クエリメソッド | シナリオ | 結果 |
メッセージ ID でクエリ | メッセージ ID がわかっており、そのメッセージの完全なトレースをクエリする必要がある場合に使用します。 | 一意のメッセージトレースを返します。 |
RequestID でクエリ | API 呼び出しの RequestID がわかっており、そのリクエストに関与するメッセージをクエリする必要がある場合に使用します。 | リクエストに関与するメッセージのメッセージトレースを返します。 |
キュー名でクエリ | 特定の期間内に特定のキューのすべてのメッセージトレースを表示する場合に使用します。 | 指定された時間範囲内のキューのメッセージトレースを返します。 |
Topic 名でクエリ | 特定の期間内に特定の Topic のすべてのメッセージトレースを表示する場合に使用します。 | 指定された時間範囲内の Topic のメッセージトレースを返します。 |
サブスクリプション名でクエリ | 特定の期間内に特定のサブスクリプションによってプッシュされたすべてのメッセージトレースを表示する場合に使用します。 | 指定された時間範囲内にサブスクリプションによってプッシュされたメッセージのメッセージトレースを返します。 |
メッセージ ID がわかっている場合は、まずメッセージ ID によるクエリメソッドを使用して、正確な結果を迅速に取得します。
一定期間にわたるメッセージの問題をトラブルシューティングするには、キュー名、Topic 名、またはサブスクリプション名によるクエリメソッドを使用します。
RequestID によるクエリは、バッチ送信やバッチ消費シナリオなど、API 呼び出しの問題をトラブルシューティングするのに役立ちます。
手順
メッセージトレースのクエリ
Simple Message Queue (旧称:MNS) コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。
メッセージトレース機能を有効にするには、メッセージトレースが無効 ボタンをクリックします。
[メッセージ追跡] ページで、要件に基づいてクエリメソッドを選択し、クエリ条件を入力します。
メッセージ ID でクエリ: メッセージ ID を入力し、[クエリ] をクリックします。
RequestID でクエリ: API 呼び出しの RequestID を入力し、[クエリ] をクリックします。
キュー名でクエリ: キュー名と開始時刻を選択します。開始時刻は過去 15 日以内で、クエリは最大 3 日間を対象にできます。その後、[クエリ] をクリックします。
Topic 名でクエリ: Topic 名と開始時刻を選択します。開始時刻は過去 15 日以内で、クエリは最大 3 日間を対象にできます。その後、[クエリ] をクリックします。
サブスクリプション名でクエリ: Topic とサブスクリプション名、および開始時刻を選択します。開始時刻は過去 15 日以内で、クエリは最大 3 日間を対象にできます。その後、[クエリ] をクリックします。
クエリ結果リストで、ターゲットメッセージを見つけ、[操作] 列の [詳細] をクリックします。
メッセージトレース詳細ページで、メッセージの完全なトレース情報を表示します。
キューメッセージトレースの詳細: 送信情報、メッセージ情報、消費情報が含まれます。
送信情報: メッセージソース、送信メソッド、プロデューサー IP、AccessKey、到着時刻、送信結果を表示します。
メッセージ情報: メッセージ ID、キュー名、ストレージ期間、可視性タイムアウト期間を表示します。スケジュールされたメッセージの場合、遅延期間とスケジュールされた消費時刻も表示されます。
消費情報: ReceiptHandle ごとにグループ化されたメッセージ消費レコードを表示します。ReceiptHandle を展開すると、受信、削除、可視性の変更などの操作の時間、コンシューマー IP、結果など、その消費セッションのすべての操作が表示されます。
Topic メッセージトレースの詳細: 送信情報、サブスクリプションマッチ情報、プッシュ情報が含まれます。
送信情報: 送信メソッド、プロデューサー IP、AccessKey、到着時刻、送信結果を表示します。
サブスクリプションマッチ情報: メッセージ ID、タグ、一致したサブスクリプション名、サブスクリプションタイプを表示します。
プッシュ情報: 各サブスクリプションのプッシュ結果、プッシュ時刻、その他の詳細を表示します。キューサブスクリプションの場合、プッシュ後の新しいメッセージ ID が表示されます。HTTP、メール、ショートメッセージサブスクリプションの場合、プッシュ状態コードと処理時間が表示されます。
(オプション) キューサブスクリプションがメッセージをキューにプッシュした後のメッセージトレースを表示するには、プッシュ情報内の [メッセージ ID] リンクをクリックします。これにより、そのキューメッセージのトレース詳細にリダイレクトされます。
よくある質問
Q: メッセージトレースが見つからないのはなぜですか?
A: 考えられる理由は次のとおりです。
メッセージトレースデータが 15 日より古く、削除されています。
クエリの時間範囲が正しくありません。時間範囲を広げてみてください。
メッセージ ID または RequestID が誤って入力されました。ID を確認して再度クエリしてください。
Q: メッセージトレースの「確認応答なし」とはどういう意味ですか?
A: 「確認応答なし」は、コンシューマーがメッセージを受信したものの、可視性タイムアウト期間が切れる前に削除しなかったことを意味します。その後、メッセージは再び消費可能になります。コンシューマープログラムがメッセージを正しく処理および削除していることを確認してください。
Q: なぜ単一のメッセージに複数の ReceiptHandle があるのですか?
A: ReceiveMessage または BatchReceiveMessage API がメッセージを受信するために呼び出されるたびに、新しい ReceiptHandle が生成されます。コンシューマーがメッセージを受信しても削除しない場合、可視性タイムアウト期間が経過するとメッセージは再び表示されます。メッセージを再度受信すると、新しい ReceiptHandle が生成されます。
Q: メッセージトレースはメッセージの送受信パフォーマンスに影響しますか?
A: いいえ、影響しません。メッセージトレースは非同期で記録されます。このプロセスは、メッセージの送受信のパフォーマンスや信頼性には影響しません。トレースの記録が失敗した場合でも、通常のメッセージ操作は影響を受けません。