分散型アプリケーションシステムでは、サービス間の相互作用は、ネットワーク通信およびデータ伝送の複雑なウェブである。 分散アプリケーションシステムにおいて要求を処理するために、アプリケーションシステムの内部サービスは、互いに通信しなければならない。 プロセス中に例外が発生すると、外部サービスで実行中のタスクが実行されないか、タイムアウトしてトラブルシューティングが困難になる可能性があります。 追跡分析機能は、サービスがシステム内で相互作用するときの要求の送信プロセスを記録します。 この機能は、詳細なログとパフォーマンスデータも提供します。 ApsaraMQ for RocketMQでは、OpenTelemetry仕様を満たすトレースデータをAlibaba Cloudトレース分析サービスに統合して、例外の診断とトラブルシューティングを行うことができます。
トレースとは何ですか?
ApsaraMQ for RocketMQのトレースデータは、OpenTelemetry仕様で定義されているメッセージングスパンのセマンティック規則を満たしています。 詳細については、「トレース意味規則」をご参照ください。
メッセージングスパンとは
メッセージングスパンは、送信、受信、およびプロセススパン間の親子関係およびリンク関係を含む、異なるタイプのスパン間のトポロジ関係を定義する。 詳細については、「メッセージングスパンの意味規則」をご参照ください。
次の表に、ApsaraMQ for RocketMQに含まれるスパンタイプを示します。
スパン | 説明 |
送信 | メッセージは、プロデューサからコンシューマに送信される。 このタイプのスパンは、メッセージの送信が開始されたときに開始し、メッセージの送信が失敗したとき、または例外がスローされたときに終了します。 メッセージ送信中にメッセージが再試行された場合、複数のスパンが記録されます。 |
受け取る | メッセージがコンシューマによって受信されるロングポーリングプロセス。 このタイプのスパンのライフサイクルは、ロングポーリングのライフサイクルと一致しています。 デフォルトでは、受信スパンは無効になっています。 受信スパンを有効にするには、 |
プロセス | プッシュコンシューマによって呼び出される |
次の図は、前述のタイプのスパン間の関係を示しています。

受信スパンが無効になっている場合、プロセススパンは送信スパンの子になります。
受信スパンが有効になっている場合、プロセススパンは受信スパンの子であり、送信スパンにリンクされます。
メッセージング属性とは
メッセージングスパンに含まれる共通属性は、メッセージングスパンの意味規則に記述されています。 次の項目は、属性を説明します。
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に統合する
ApsaraMQ For RocketMQのトレースデータをSimple Log Serviceに統合する方法については、「OpenTelemetry SDK for Javaを使用したJavaアプリケーションからSimple Log Serviceへのトレースデータのインポート」をご参照ください。
例:
ApsaraMQ for RocketMQダッシュボードのメトリクスのトレース: この例では、メッセージ送信の遅延、メッセージ送信の成功率、メッセージ消費の成功率、エンドツーエンドのレイテンシなどのメトリクスが表示されます。 これらのメトリックは、ApsaraMQ for RocketMQのトレースデータに基づいています。
ApsaraMQ for RocketMQダッシュボードメトリクスの分析: メッセージIDまたはトレースIDに基づいて、異常なリクエストに対してさらに分析を実行できます。
トレースデータをARMSに統合する
ApsaraMQ For RocketMQのトレースデータをARMSに統合する方法については、「OpenTelemetryのトレース分析への接続」をご参照ください。