すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RocketMQ:エンドツーエンドのトレース解析ソリューション

最終更新日:Feb 21, 2025

分散型アプリケーションシステムでは、サービス間の相互作用は、ネットワーク通信およびデータ伝送の複雑なウェブである。 分散アプリケーションシステムにおいて要求を処理するために、アプリケーションシステムの内部サービスは、互いに通信しなければならない。 プロセス中に例外が発生すると、外部サービスで実行中のタスクが実行されないか、タイムアウトしてトラブルシューティングが困難になる可能性があります。 追跡分析機能は、サービスがシステム内で相互作用するときの要求の送信プロセスを記録します。 この機能は、詳細なログとパフォーマンスデータも提供します。 ApsaraMQ for RocketMQでは、OpenTelemetry仕様を満たすトレースデータをAlibaba Cloudトレース分析サービスに統合して、例外の診断とトラブルシューティングを行うことができます。

トレースとは何ですか?

ApsaraMQ for RocketMQのトレースデータは、OpenTelemetry仕様で定義されているメッセージングスパンのセマンティック規則を満たしています。 詳細については、「トレース意味規則」をご参照ください。

メッセージングスパンとは

メッセージングスパンは、送信、受信、およびプロセススパン間の親子関係およびリンク関係を含む、異なるタイプのスパン間のトポロジ関係を定義する。 詳細については、「メッセージングスパンの意味規則」をご参照ください。

次の表に、ApsaraMQ for RocketMQに含まれるスパンタイプを示します。

スパン

説明

送信

メッセージは、プロデューサからコンシューマに送信される。 このタイプのスパンは、メッセージの送信が開始されたときに開始し、メッセージの送信が失敗したとき、または例外がスローされたときに終了します。

メッセージ送信中にメッセージが再試行された場合、複数のスパンが記録されます。

受け取る

メッセージがコンシューマによって受信されるロングポーリングプロセス。 このタイプのスパンのライフサイクルは、ロングポーリングのライフサイクルと一致しています。

デフォルトでは、受信スパンは無効になっています。 受信スパンを有効にするには、-Dotel.instrumentation.messaging.experimental.receive-telemetry.enabledパラメーターをランタイムに追加し、パラメーターをtrueに設定する必要があります。

プロセス

プッシュコンシューマによって呼び出されるMessageListener操作によってメッセージが処理されるプロセス。 このタイプのスパンは、MessageListener操作がメッセージの処理を開始すると開始され、MessageListener操作がメッセージの処理を終了すると終了します。

次の図は、前述のタイプのスパン間の関係を示しています。

span关系

  • 受信スパンが無効になっている場合、プロセススパンは送信スパンの子になります。

  • 受信スパンが有効になっている場合、プロセススパンは受信スパンの子であり、送信スパンにリンクされます。

メッセージング属性とは

メッセージングスパンに含まれる共通属性は、メッセージングスパンの意味規則に記述されています。 次の項目は、属性を説明します。

  • messaging.message.id: メッセージID。 IDは、メッセージの一意の識別子である。

  • messaging.de stination: メッセージの配信先。 ほとんどの場合、宛先はキューまたはトピックです。

  • messaging.operation: 送信、受信、確認など、メッセージに対して実行される操作のタイプ。

その他の属性については、「Apache RocketMQ属性」をご参照ください。

異なるメッセージング製品は、異なる挙動および属性を有する。 次の表に、ApsaraMQ for RocketMQの一意の属性を示します。

属性

値のタイプ

説明

messaging.rocketmq.client_group

String

コンシューマーの負荷分散グループ。

messaging.rocketmq.client_id

String

クライアント ID。 IDは、クライアントの一意の識別子である。

messaging.rocketmq.message.de livery_timestamp

int

スケジュールされたメッセージの送信予定時刻。

messaging.rocketmq.message.group

String

順序付けられたメッセージが属するグループ。

messaging.rocketmq.message.type

String

メッセージタイプ。 有効な値:

messaging.rocketmq.message.tag

String

メッセージのフィルタリングに使用されるタグ。 消費者はタグでメッセージをフィルタリングできます。 これにより、コンシューマは指定されたタグを含むメッセージのみを受信できます。

messaging.rocketmq.message.keys

string[]

メッセージキー。 メッセージごとに異なるキーを設定できます。 これにより、管理したいメッセージをすばやく見つけることができます。

制限事項

  • SDK for Javaを使用するクライアントのみが、トレース分析サービスにトレースデータを報告できます。 SDK For Javaのリリースノートについては、「バージョンの説明」をご参照ください。

  • ApsaraMQ for RocketMQは、トランザクションメッセージの本番関連データのみをトレースします。

  • ApsaraMQ for RocketMQは、プッシュコンシューマによって消費されたメッセージのデータのみをトレースします。 詳細については、「コンシューマータイプ」をご参照ください。

ApsaraMQ for RocketMQが提供するトレースデータ統合ソリューション

トレース分析を実装するために、ApsaraMQ for RocketMQはまず、OpenTelemetry仕様を満たすトレースデータをトレース分析サーバーに報告します。 そして、サーバは、トレースデータを集約して表示する。

自分でトレース分析サーバーを構築するか、Alibaba Cloudが提供するトレース分析サービスをトレース分析サーバーとして使用できます。 ApsaraMQ for RocketMQでは、トレースデータをAlibaba Cloud Simple Log ServiceおよびApplication Real-Time Monitoring Service (ARMS) に統合できます。 詳細については、「フルスタックの観察可能性」および「トレース分析とは」をご参照ください。

トレースデータをSimple Log Serviceに統合する

トレースデータをARMSに統合する

ApsaraMQ For RocketMQのトレースデータをARMSに統合する方法については、「OpenTelemetryのトレース分析への接続」をご参照ください。