分散アプリケーションでは、ApsaraMQ for RocketMQ は非同期デカップリングを提供する主要なサービスです。本サービスのメッセージトレースデータは、上流および下流のビジネス情報を関連付け、例外のトラブルシューティングや問題の特定に役立ちます。このトピックでは、メッセージトレースのユースケース、ApsaraMQ for RocketMQ で定義されているトレースパラメーター、およびメッセージトレースの確認方法について説明します。
ユースケース
ApsaraMQ for RocketMQ は、メッセージのライフサイクルにおける主要なデータポイントをトレースパラメーターとして定義し、可視化されたクエリツールを提供します。メッセージトレースを使用すると、ビジネスプロセスのステータスを迅速に把握し、例外を特定できます。
メッセージトレースの代表的なユースケースは次のとおりです:
-
シナリオ 1:メッセージが正常に送信または消費されたかどうかを確認します。
-
シナリオ 2:スケジュール/遅延メッセージが配信されたかどうかを確認します。
-
シナリオ 3:トランザクションメッセージがコミットまたはロールバックされたかどうかを確認します。
-
シナリオ 4:プロデューサーとコンシューマーの識別情報およびマシン情報を確認して、問題を調査します。
トレースパラメーター
次の表に、ApsaraMQ for RocketMQ が提供するトレースパラメーターを示します。
|
カテゴリ |
パラメーター |
説明 |
|
プロデューサー |
プロデューサー情報 |
メッセージプロデューサーが使用するアカウントまたは AccessKey ID。 |
|
ホスト名 |
プロデューサークライアントのマシンのホスト名。 |
|
|
送信時刻 |
プロデューサーがメッセージを送信した時刻。 |
|
|
到着時刻 |
メッセージが ApsaraMQ for RocketMQ サーバーに保存された時刻。 |
|
|
送信結果 |
メッセージ送信操作の結果。有効な値:
|
|
|
メッセージの基本情報 |
メッセージタイプ |
|
|
メッセージ ID |
ApsaraMQ for RocketMQ によって自動生成される、グローバルで一意のメッセージ識別子。 |
|
|
トピック |
メッセージが属するトピック。 |
|
|
メッセージキー |
プロデューサーがビジネスロジックを一意に識別するために設定するビジネスキー。 |
|
|
メッセージタグ |
トピック内でメッセージをフィルタリングするために使用するタグ。 |
|
|
順序メッセージ |
MessageGroup |
順序メッセージに対してプロデューサーが定義する MessageGroup。同一 MessageGroup 内のメッセージは、先入れ先出し (FIFO) の順序で処理されます。 |
|
トランザクションメッセージ |
チェックコールバック時刻 |
半メッセージに対するトランザクションステータスチェックコールバックの時刻。 |
|
コミット時刻 |
サーバーがトランザクションメッセージをコミットした時刻。 |
|
|
ロールバック時刻 |
トランザクションメッセージがロールバックされた時刻。 |
|
|
スケジュールメッセージ |
事前設定の遅延時間 |
メッセージのスケジュール配信時刻。 |
|
コンシューマー |
消費結果 |
1 回の消費試行の結果。有効な値:
|
|
コンシューマー情報 |
コンシューマーがメッセージをサブスクライブするために使用するアカウントまたは AccessKey ID。 |
|
|
ホスト名 |
コンシューマークライアントのマシンのホスト名。 |
|
|
順序配信 |
コンシューマーグループで順序消費が有効になっているかどうか。 |
|
|
配信時刻 |
ApsaraMQ for RocketMQ サーバーがメッセージをコンシューマーに配信した時刻。 |
|
|
応答時刻 |
ApsaraMQ for RocketMQ サーバーがコンシューマーから消費結果を受信した時刻。 |
|
|
invisibleDuration |
SimpleConsumer が指定するメッセージの不可視期間。詳細については、「SimpleConsumer consumption retry policy」をご参照ください。 |
|
|
Change invisible duration |
SimpleConsumer が ChangeInvisibleDuration 操作を呼び出した時刻。 |
|
|
デッドレター時刻 |
消費失敗後、メッセージがデッドレターキューに送信された時刻。 |
制限事項
RocketMQ 4.x/3.x SDK を使用するクライアントでは、メッセージトレース機能はデフォルトで無効です。コンソールでメッセージトレースをクエリするには、コードでこの機能を有効にする必要があります。次の設定を行ってください:
-
プロデューサー
producer.setAccessChannel(AccessChannel.CLOUD); -
コンシューマー
consumer.setAccessChannel(AccessChannel.CLOUD);
課金
-
サブスクリプションおよび従量課金インスタンスでは、メッセージトレースはデフォルトで有効であり、無料です。
-
サーバーレスインスタンスでは、メッセージトレースを手動で有効または無効にできます。詳細については、「Enable or disable message tracing for a serverless instance」をご参照ください。
サーバーレスインスタンスでメッセージトレースを有効にすると、生成されたメッセージトレース数に基づいて課金されます。課金の詳細については、「Message trace fees」をご参照ください。
メッセージトレースの保持期間
-
サブスクリプションおよび従量課金インスタンスでは、メッセージトレースは 3 日間保存されます。
-
サーバーレスインスタンスでは、メッセージトレースは 14 日間保存されます。
メッセージトレースのクエリ方法
ApsaraMQ for RocketMQ は次のクエリ方法をサポートしています:
-
メッセージ ID でクエリ:完全一致を実行します。この方法は高速かつ正確であるため、推奨します。
-
メッセージキーでクエリ:あいまい検索を実行し、最大 1,000 件のトレースを返します。メッセージ ID を記録していないが、識別性の高いメッセージキーを設定している場合にのみ使用してください。
-
トピックでクエリ:範囲クエリを実行します。この方法は、メッセージ ID またはメッセージキーが不明な低ボリュームのシナリオに適しています。時間範囲に識別できない多数のメッセージが含まれる可能性があるため、一般的な用途には推奨しません。
メッセージトレースの有効化または無効化
-
メッセージトレースを無効にすると、サーバーレスインスタンスのトレースデータを保存またはクエリできず、コンソールにメッセージトレースのクエリオプションが表示されなくなります。
-
メッセージトレースを有効にすると、サーバーレスインスタンスで生成されたメッセージトレースに対して課金されます。詳細については、「Message trace fees」をご参照ください。
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。
-
インスタンスの詳細 ページで、基本情報 タブをクリックします。次に、メッセージトレース パラメーターの横にある 有効にする または 無効にする をクリックします。
-
表示されるダイアログボックスで、確定 をクリックします。
メッセージトレースのクエリ
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。
-
左側のナビゲーションペインで、メッセージトレース をクリックします。メッセージトレース ページで、検索方法を選択し、条件を入力してから、[検索] をクリックします。
結果は、メッセージ ID、トピック、タグ、メッセージキー、作成時刻などの列を含むテーブルに表示されます。**[操作]** 列で **[Message Traces]** をクリックすると、該当メッセージのトレース詳細を確認できます。
-
クエリ結果の中から目的のメッセージを見つけ、操作 列の メッセージトレース をクリックします。パネルが表示され、詳細なメッセージ情報を表示できます。
メッセージトレースパネルには、生成から消費までのメッセージの完全なライフサイクルが表示され、3 つの領域に分かれています。**[Producer]** 領域には、メッセージの送信元、プロデューサー情報、ホスト名、送信時刻、サーバー到着時刻、送信結果が表示されます。**[MQ Server]** 領域には、メッセージタイプ、メッセージ ID、トピック、メッセージキー、タグが表示されます。**[Consumer]** 領域には、グループ ID、消費統計 (総試行回数と失敗回数)、および各コンシューマーグループの消費ステータスが表示されます。
-
メッセージが正常に消費された場合、[コンシューマー] カードのグループ ID をクリックすると、詳細な消費情報が表示されます。[画像のエクスポート] をクリックすると、現在のメッセージトレース詳細の画像が生成されます。
メッセージトレースの詳細は 3 つのパネルで構成されます。**[Producer]** パネルには送信時刻、サーバー到着時刻、送信結果が表示されます。**[MQ Server]** パネルにはメッセージタイプ、メッセージ ID、トピック、メッセージキー、タグが表示されます。コンシューマーグループパネル (例:test_group1) を展開すると、配信回数、配信結果、順序配信ステータス、配信時刻、応答時刻が表示されます。
関連トピック
次の API を呼び出して、メッセージトレースを管理することもできます: