分散システムでは、単一のリクエストが完了するまでに数十のサービスを通過する場合があります。メッセージが滞留したり、コンシューマーがタイムアウトしたり、レイテンシが急増したりした場合、プロデューサー-ブローカー-コンシューマーチェーン全体で根本原因を特定するには、メッセージフローの可視性が必要です。
ApsaraMQ for RocketMQ は、OpenTelemetry メッセージングのセマンティック規約に従うトレースデータを生成します。このデータを Simple Log Service または Application Real-Time Monitoring Service (ARMS) にエクスポートして、メッセージ配信を追跡し、エンドツーエンドレイテンシを測定し、障害を診断できます。
制限事項
トレースをセットアップする前に、次の制約事項を確認してください。
Java SDK のみ: SDK for Java を使用するクライアントのみがトレースデータをレポートできます。バージョン詳細については、「リリースノート」をご参照ください。
トランザクションメッセージ: トランザクションメッセージの場合、本番関連データのみがトレースされます。
プッシュコンシューマーのみ: プッシュコンシューマーによって消費されるメッセージのみがトレースデータを生成します。「コンシューマータイプ」をご参照ください。
トレースデータのエクスポート
ApsaraMQ for RocketMQ は、OpenTelemetry 準拠のトレースデータをトレーシング分析サーバーにエクスポートします。Alibaba Cloud マネージドサービスを使用するか、独自のバックエンドを構築できます。
Simple Log Service
Simple Log Service は、メッセージ送信遅延、送信成功率、消費成功率、エンドツーエンドレイテンシをモニタリングするためのダッシュボードを提供します。メッセージ ID またはトレース ID で個々のリクエストをドリルダウンできます。
セットアップ: Java アプリケーションから OpenTelemetry SDK for Java を使用して Simple Log Service にトレースデータをインポートする
デモダッシュボード:
トレースメトリックダッシュボード -- メッセージ送信遅延、成功率、エンドツーエンドレイテンシを表示します。
分析ダッシュボード -- メッセージ ID またはトレース ID で特定のリクエストを調査します。
Simple Log Service の詳細については、「注意事項」をご参照ください。
ARMS
Application Real-Time Monitoring Service (ARMS) は、そのトレーシング分析コンポーネントを通じて分散トレーシングを提供します。
セットアップ: OpenTelemetry をトレーシング分析に接続する
ARMS トレーシング分析の詳細については、「トレーシング分析とは」をご参照ください。
トレースの仕組み
ApsaraMQ for RocketMQ は、メッセージライフサイクルの各ステージを スパン として記録します。各スパンは、タイミングデータ、メッセージメタデータ、および操作タイプをキャプチャします。
スパンタイプ
3 種類のスパンタイプがメッセージライフサイクルをキャプチャします。
スパンタイプ | キャプチャ内容 | ライフサイクル |
send | プロデューサーから送信されるメッセージ。 | プロデューサーが送信を開始したときに開始され、送信が成功、失敗、または例外をスローしたときに終了します。再試行が発生した場合、各試行で個別のスパンが生成されます。 |
receive | コンシューマーのロングポーリングリクエスト。 | ロングポーリング操作のライフサイクルと一致します。デフォルトでは無効です。 |
process | プッシュコンシューマーがメッセージを処理する。 |
|
受信スパンの有効化
受信スパンはデフォルトで無効です。有効にするには、次の JVM パラメーターを追加します。
-Dotel.instrumentation.messaging.experimental.receive-telemetry.enabled=trueスパンの関係
スパン間の関係は、受信スパンが有効になっているかどうかによって異なります。
受信スパンが無効 (デフォルト): 処理スパンは送信スパンの直接の子です。
受信スパンが有効: 処理スパンは受信スパンの子であり、送信スパンにリンクされます。

メッセージング属性
各スパンには、OpenTelemetry メッセージングスパンのセマンティック規約で定義された属性が含まれます。
標準属性
messaging.message.id:メッセージの一意の識別子。
messaging.destination:メッセージが配信されるトピックまたはキュー。
messaging.operation:操作タイプ:送信、受信、または確認応答。
RocketMQ 固有の属性
ApsaraMQ for RocketMQ は次の属性を追加します。完全なリストについては、「Apache RocketMQ 属性」をご参照ください。
属性 | タイプ | 説明 |
messaging.rocketmq.client_group | 文字列 | 負荷分散に使用されるコンシューマーグループ。 |
messaging.rocketmq.client_id | 文字列 | クライアントインスタンスの一意の識別子。 |
messaging.rocketmq.message.delivery_timestamp | int | スケジュールおよび遅延メッセージのスケジュールされた配信時刻。 |
messaging.rocketmq.message.group | 文字列 | 順序付きメッセージのメッセージグループ。 |
messaging.rocketmq.message.type | 文字列 | メッセージタイプ: |
messaging.rocketmq.message.tag | 文字列 | コンシューマー側でメッセージをフィルターするために使用されるタグ。 |
messaging.rocketmq.message.keys | string[] | 特定のメッセージを検索するためのビジネスキー。 |