このトピックでは、Lightweight Message Queue (旧称 MNS) のエンドツーエンドトレースソリューションのコア機能、トレース定義、およびデータインジェストオプションについて説明します。
概要
分散アプリケーションシステムでは、サービス間のやり取りには複雑なネットワーク通信とデータ転送が伴います。単一のリクエストを完了するには、多くの場合、複数の内部サービス呼び出しが必要です。サービス間の非同期通信のコアコンポーネントとして、メッセージキューはピークシフトやアプリケーションデカップリングなどの重要なタスクを処理します。プロデューサー、メッセージキュー、コンシューマー間でメッセージが移動する際に、チェーン内の障害が発生すると、メッセージ損失、遅延、または重複消費が発生する可能性があります。これにより、問題の根本原因を迅速に特定することが困難になります。
Lightweight Message Queue (旧称 MNS) のエンドツーエンドトレースソリューションは、メッセージのライフサイクル全体にわたる完全な転送パスを記録し、詳細なログとパフォーマンスメトリクスを提供します。Lightweight Message Queue は、OpenTelemetry 準拠のトレースデータを Alibaba Cloud の Tracing Analysis サービスにインジェストすることをサポートしています。これにより、分散メッセージングシステムにおける異常の診断を迅速に行うことができます。
コア機能
生産および消費監査:操作詳細、実行時間、および結果ステータスを記録します。
条件付きクエリ:メッセージ ID、キュー名、時間範囲などのフィルターを使用して問題を迅速に特定します。
標準化された統合:OpenTelemetry 標準に準拠し、アプリケーショントレースデータとシームレスに統合します。
異常検出:異常なトレースを自動的に検出およびマークし、障害診断を加速します。
トレース定義
Lightweight Message Queue のトレースは、OpenTelemetry Messaging Spans 仕様に準拠しており、メッセージキュー固有の属性で仕様を拡張しています。
汎用メッセージングスパン属性
Lightweight Message Queue は、OpenTelemetry 標準で定義されている汎用メッセージングトレース属性をサポートしています。詳細については、「OpenTelemetry Messaging Spans 仕様」をご参照ください。
これらの属性には、以下が含まれます。
messaging.system:メッセージングシステムの識別子。messaging.operation.name: 操作の名前。messaging.operation.type: 操作のタイプ。messaging.destination.name: 送信先キューまたは件名の名称。messaging.message.id: メッセージID。error.type: エラータイプ(操作が失敗した場合)。
Lightweight Message Queue 固有の属性
標準属性に加えて、Lightweight Message Queue は以下のスパン固有の属性を提供します。
属性名 | タイプ | 説明 | 例 | 要件レベル |
| string | 特定の Lightweight Message Queue 操作メソッド名。 | SendMessage, ReceiveMessage, PublishMessage | 必須 |
| string | リクエストの一意の ID。 | 6733433D43444218004FAED2 | 必須 |
| string | サブジェクトに公開されたメッセージのメッセージタグ。 | order, payment | オプション |
| int | メッセージが再度可視になる UNIX タイムスタンプ (秒単位)。 | 1731413593 | オプション |
| string | メッセージ受信時に返されるレシートハンドル。 | 8-oMWXHzxBZlgIlzuz8ztxz0z8MHzcT8Z3Zsy3y0 | オプション |
| string | メッセージを削除または変更するために使用されるレシートハンドル。 | 8-oMWXHzxBZlgIlzuz8ztxz0z8MHzcT8Z3Zsy3y0 | オプション |
| string | サブスクリプションタイプ。 | HTTP, HTTPS, QUEUE | オプション |
属性値の詳細
messaging.smq.operation でサポートされている値は次のとおりです。
SendMessage: キュー メッセージを送信します。BatchSendMessage: キュー メッセージをバッチ単位で送信します。ReceiveMessage: キューメッセージを受信します。BatchReceiveMessage: キューのメッセージをバッチで受信します。DeleteMessage: キュー メッセージを削除します。BatchDeleteMessage: キュー メッセージをバッチで削除します。ChangeMessageVisibility: メッセージの可視性タイムアウトを変更します。PeekMessage: キューメッセージを削除せずに参照します。BatchPeekMessage: キューのメッセージをバッチ単位で削除せずに確認します。PublishMessage: サブジェクトにメッセージを発行します。ConsumeMessage: サブスクライブしたメッセージを消費します。AckMessage:メッセージ消費の確認。Notify: 通知を送信します。
messaging.smq.subscription.type でサポートされている値は次のとおりです。
HTTP:HTTP エンドポイントのサブスクリプション。HTTPS: HTTPS エンドポイントのサブスクリプション。QUEUE: キュー サブスクリプション。
制限事項
Java SDK クライアント (バージョン 1.3.0 以降) のみが、Tracing Analysis へのトレースデータのレポートをサポートしています。SDK バージョンの詳細については、「バージョン履歴」をご参照ください。
トレースデータインジェストオプション
Lightweight Message Queue を Application Real-Time Monitoring Service (ARMS) と統合することで、トレースデータの統合された収集、ストレージ、および分析を有効にできます。詳細については、「アプリケーション監視とは」をご参照ください。
ARMS アプリケーション監視との統合
ステップバイステップの手順については、「アプリケーションオンボーディング」をご参照ください。