ApsaraMQ for RocketMQでのメッセージの処理には、メッセージ送信、メッセージ保存、およびメッセージ消費の主要なアクティビティが含まれます。 ApsaraMQ for RocketMQは、アクティビティに関連するデータをトレースパラメーターとして定義します。 メッセージトレースは、メッセージ送信結果、送信期間、メッセージがブローカに到着した時間、メッセージ消費結果、消費期間、およびクライアント情報を含む。 ApsaraMQ for RocketMQを使用すると、視覚化された方法でメッセージトレースをクエリできます。 メッセージが期待どおりに送信または消費されない場合、または特定のメッセージを追跡する場合は、メッセージのトレースをクエリして、各アクティビティでのメッセージの処理ステータスを取得できます。
メッセージトレースデータ
ApsaraMQ for RocketMQでは、メッセージの完全なトレースには、プロデューサー、ブローカー、およびコンシューマーが含まれます。 各ロールがメッセージを処理すると、関連情報がトレースに追加されます。 集計された情報を使用して、メッセージのステータスを取得できます。
使用上の注意
メッセージの送信後、ApsaraMQ for RocketMQコンソールでメッセージの属性に基づいてメッセージのトレースを照会できます。 この機能は、すべてのタイプのメッセージに有効です。 メッセージトレース機能を使用する前に、次の点に注意してください。
メッセージトレースクエリの時間範囲
デフォルトでは、メッセージはApsaraMQ for RocketMQブローカーに3日間保存されます。 現在の時点の3日前に生成されたメッセージのトレースのみを照会できます。 たとえば、現在の時点が2023年11月30日の15:09:48の場合、2023年11月27日の15:09:48から2023年11月30日の15:09:48までに生成されたメッセージのトレースを照会できます。
クエリ結果に対する消費ステータスの影響
メッセージタイプ | 説明 |
メッセージが消費されない場合、未消費と表示されます。 メッセージが消費されると、送信情報と消費情報が表示されます。 | |
メッセージが消費されない場合、未消費と表示されます。 メッセージが消費されると、送信情報と消費情報が表示されます。 | |
現在のシステム時刻が指定された消費時点より前の場合、メッセージのトレースは照会できますが、メッセージは照会できません。 | |
メッセージのローカルトランザクションがコミットされる前に、メッセージのトレースを照会できますが、メッセージを照会することはできません。 |
メッセージトレース機能をサポートするSDKのバージョン
プロトコル | Language | バージョン | 説明 |
TCP | Java | V1.2.7.Final以降 | |
C/C++ | V1.1.2以降 | ||
.NET | V1.1.2以降 | ||
HTTP | Node.js | V1.0.2以降 | |
その他 | V1.0.1以降 |
拡張メッセージトレース機能を使用するための前提条件
基本的なメッセージトレース機能と比較して、拡張メッセージトレース機能を使用すると、ApsaraMQ for RocketMQコンソールでより多くのトレースデータを表示できます。 メッセージ消費中に生成されたトレースデータ、およびスケジュールされたメッセージ、遅延メッセージ、トランザクションメッセージのトレースデータを照会できます。 トレースクエリ結果で返されるパラメーターについては、「パラメーター」をご参照ください。
Java用TCPクライアントSDK:
Java用TCPクライアントSDKがV2.x.x.Finalにアップグレードされました。
インスタンスは、中国 (杭州) 、中国 (青島) 、中国 (北京) 、中国 (張家口) 、中国 (フフホト) 、中国 (深セン) 、中国 (成都) 、ドイツ (フランクフルト) 、インドネシア (ジャカルタ) のいずれかのリージョンにデプロイする必要があります。
C ++ のためのTCPクライアントSDK:
C ++ 用TCPクライアントSDKがV3.x.xにアップグレードされました。
インスタンスは任意のリージョンにデプロイできます。
一般的なシナリオ
本番環境でメッセージが送信または消費されない場合は、メッセージトレース機能を使用して問題のトラブルシューティングを行うことができます。 特定の時間範囲内のメッセージID、メッセージキー、またはトピックでメッセージのトレースを照会して、メッセージが期待どおりに送信されているかどうかを確認できます。
例:
期待どおりにメッセージが受信されず、関連するログに基づいて原因を特定する場合は、次の手順を実行して、メッセージトレースを使用して問題をトラブルシューティングします。
メッセージID、メッセージキー、トピック、メッセージが送信されたおおよその時点など、メッセージに関する情報を収集します。
ApsaraMQ for RocketMQコンソールにログインし、収集した情報に基づいてクエリタスクを作成し、メッセージトレースをクエリします。
クエリ結果を確認し、原因を分析します。
トレースに 未消費 が表示されている場合は、グループ ページに移動して消費ステータスを確認し、問題がメッセージの蓄積によるものかどうかを確認できます。 詳細については、「コンシューマーの詳細の表示」をご参照ください。
メッセージが消費された場合は、消費情報を確認して、対応する消費者クライアントとメッセージが消費された時刻を見つけます。 次に、コンシューマークライアントにログインして、関連するログを表示します。
手順
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、メッセージトレース をクリックします。 表示されるページの左上隅で、クエリタスクの作成 をクリックします。
メッセージトレースクエリタスクの作成 パネルで、ビジネス要件に基づいてクエリ条件を設定します。 次に、[OK] をクリックします。
重要時間範囲をできるだけ正確に設定して、クエリの範囲を絞り込み、クエリを高速化します。
メッセージトレース機能では、次のクエリメソッドがサポートされています。
Message ID から検索: この方法は、正確な一致と高速性のために推奨されます。
Message Key から検索: このメソッドは、ファジー検索を使用します。 この方法を使用すると、最大1,000個のメッセージのトレースを照会できます。 この方法は、メッセージのIDを記録せず、メッセージを一意に識別するキーを指定したシナリオにのみ適しています。
トピックから検索: このメソッドは範囲クエリを使用します。 この方法は、メッセージIDを記録したり、メッセージキーを指定したりしなかったメッセージ量の少ないシナリオに適しています。 このクエリ方法は使用しないことを推奨します。 ほとんどの場合、特定の時間範囲内のトピックでは多数のメッセージが生成されます。 この方法を使用すると、クエリされたメッセージの中から特定のメッセージを特定することはほとんどできません。
クエリタスクを作成した後、メッセージトレース ページでクエリタスクを表示できます。 ステータス 列に クエリ中 が表示されている場合、メッセージトレースは表示できません。 タスクリストの右上隅にあるボタンをクリックすると、タスクのステータスが検索完了に変わるまで、タスクのステータスを更新できます。
パラメーター
次のパラメーターは、インスタンスとクライアントSDKのバージョンが拡張メッセージトレース機能を使用するための前提条件を満たしている場合にのみ、コンソールで表示できます。 詳細については、「拡張メッセージトレース機能を使用するための前提条件」をご参照ください。
プロデューサーセクションのAccessKey
MQ Serverセクションの [サーバーに到着] 、[配信予定] 、[配信予定] 、[コミット済み /ロールバック]
コンシューマー セクションの コンシューマーに到達 と 処理時間待ち
表 1 Parameters
セクション | パラメーター | 説明 |
基本情報 | メッセージID | メッセージのグローバル一意識別子。 この識別子は、ApsaraMQ for RocketMQによって自動的に生成されます。 |
トピック | メッセージが属するトピック。 | |
メッセージキー | メッセージのビジネス識別子。 メッセージキーは、メッセージプロデューサーによって指定され、ビジネスロジックを一意に識別します。 | |
メッセージタグ | トピック内のメッセージを分類するために使用されるタグ。 | |
プロデューサー | AccessKey | Alibaba CloudアカウントまたはRAM (Resource Access Management) ユーザーのAccessKey ID。 AccessKey IDは、ユーザーIDの検証に使用されます。 SDKを使用するか、API操作を呼び出してApsaraMQ for RocketMQリソースにアクセスする場合、ID検証にはAccessKey IDが必要です。 |
クライアント IP | メッセージプロデューサーのクライアントIPアドレス。 | |
メッセージ作成日時 | メッセージがプロデューサーから送信されたときを示すタイムスタンプ。 | |
RT 送信 | メッセージの送信に消費された時間。 単位:ミリ秒。 | |
送信ステータス | メッセージ送信タスクのステータス。 詳細については、「メッセージステータス」の「送信ステータス」をご参照ください。 | |
MQサーバー | メッセージのタイプ | 説明 メッセージがスケジュール済みメッセージであるか遅延メッセージであるかに関係なく、メッセージのタイプ パラメーターにスケジュールメッセージが表示されます。 |
サーバーに到着 | メッセージがApsaraMQ for RocketMQブローカーに到着した時刻。 | |
配信予定 | スケジュールされたメッセージをコンシューマに配信できるスケジュールされた時点。 | |
配送先 | メッセージを消費者に配信できる時間。 | |
コミット /ロールバックで | トランザクションがコミットまたはロールバックされた時刻。 | |
コンシューマー | AccessKey | Alibaba CloudアカウントまたはRAMユーザーのAccessKey ID。 AccessKey IDは、ユーザーIDの検証に使用されます。 SDKを使用するか、API操作を呼び出してApsaraMQ for RocketMQリソースにアクセスする場合、認証にはAccessKey IDが必要です。 |
コンシューマーに到達 | メッセージがコンシューマークライアントに到着した時刻。 | |
処理時間待ち | メッセージがコンシューマークライアントに到着してからメッセージが消費され始めたまでの時間。 | |
配信結果 | メッセージは、それが消費される前に複数回配信される必要があり得る。 このパラメータは、1つの特定の配信の結果を示します。 詳細については、「メッセージステータス」の「消費ステータス」をご参照ください。 | |
クライアントIPアドレス | コンシューマークライアントのIPアドレス。 | |
メッセージ処理開始 | メッセージがクライアントによって消費され始めたときを示すタイムスタンプ。 | |
メッセージ処理終了 | コンシューマがメッセージの消費を完了したときを示すタイムスタンプ。 | |
メッセージ処理時間 | コンシューマーがメッセージを消費するために使用する時間。 |
[メッセージトレース] ページで、クエリタスクを見つけ、操作 列の 検索結果 をクリックします。 表示されるページで、クエリされたメッセージの送信ステータスと消費ステータスを 送信ステータス および 消費ステータス 列に表示できます。 また、メッセージトレースの詳細ページのプロデューサーセクションとコンシューマーセクションで、各メッセージの送信ステータスと消費ステータスを表示することもできます。 次の表に、送信ステータスと消費ステータスを示します。
表 2. メッセージのステータス
タイプ | 状態 |
送信ステータス | 送信しました。 |
送信に失敗しました。 | |
メッセージのスケジュール中です。 | |
コミットされていないトランザクションメッセージ | |
トランザクションメッセージのロールバック | |
消費ステータス | すべて成功しました。 |
一部成功 | |
すべて失敗しました。 | |
未消費 | |
消費結果は返されません。 | |
メッセージが消費されました。 | |
メッセージの消費に失敗しました。 |
よくある質問
メッセージのトレースを照会できないのはなぜですか?
SDKのバージョンが有効かどうかを確認します。 メッセージトレース機能をサポートするSDKのバージョンについては、「メッセージトレース機能をサポートするSDKのバージョン」をご参照ください。
指定した時間範囲が有効かどうかを確認します。
デフォルトでは、メッセージはApsaraMQ for RocketMQブローカーに3日間保存されます。 現在の時点の3日前に生成されたメッセージのトレースのみを照会できます。 たとえば、現在の時点が2023年11月30日の15:09:48の場合、2023年11月27日の15:09:48から2023年11月30日の15:09:48までに生成されたメッセージのトレースを照会できます。
重要ストレージ容量が不十分なため、ApsaraMQ for RocketMQブローカーにメッセージトレースが3日間保持されない場合があります。 メッセージのトレースを3日間保持する場合は、ApsaraMQ for RocketMQ Enterprise Platinum Editionインスタンスの使用を推奨します。 これらのインスタンスでは、メッセージトレースのカスタム保存期間を指定できます。
メッセージトレース機能は非同期リンクで実装されているため、メッセージのトレースデータが不完全な場合があります。 指定したクエリ条件が有効であっても、システムはクエリに対して結果を返さない場合があります。 この場合、クライアントのログを照会して消費の詳細を取得できます。 詳細については、「ロギング設定」をご参照ください。
関連ドキュメント
ApsaraMQ for RocketMQが提供する次のAPI操作を呼び出して、メッセージトレースを照会することもできます。