最近、AWS XrayをSpringプロジェクトに追加し始めました。AWSXRayServletFilter
を利用してクライアントリクエストをカバーするSegments
の作成に成功しました。AWS Xray with Java SQS JMSコネクタ
AWS SDK Instrumentorを追加して、AWSサービスの使用状況を追跡し始めました。その1つがSQSです。これは、amazon-sqs-java-messaging-lib
を使用して、JMSを使用してSQSメッセージを受信します。これは我々がいくつかの問題に直面しているところです。
TracingHandler
は、アプリケーションがSubSegment
を作成しようと試みるたびに、Segment
が既に作成されていないために失敗します。これらのリクエストをSegment
に書き込むにはどうすればよいですか?メッセージをキューにプッシュしたリソースからセグメントを一緒にリンクするために、その情報がメッセージ自体に含まれていないのでしょうか?
セグメントが見つからないか、少なくとも親のトレースIDからピックアップしても最新のdocsに含まれている情報が表示されない場合、セグメントを作成するためのコンテキストがない戦略があると思います。
SQSに関しては、SQSメッセージの中で、サービスがメッセージを待ち行列に入れていたときのために、セグメントの親IDを含む可能性のあるプロパティがサポートされる可能性があると私は考えました。 SQSクライアントがXRayをある程度認識していない場合、SQSのソースからシンクまでのフローをどのように指定できますか?私はそれらの要求をX線サービスマップに接続したいと思っています。しかし、リンクとガイダンスをありがとう!細部を感謝してください。 – dvisco
SQSクライアントはX線を認識しており、それがそれらの「人為的」推定セグメントをどのように作成するかです。 SQSのソースからシンクに接続する場合は、ソースSQSメッセージを入れる最初のものをブロックしていない非同期部分なので、意味をなさないかどうかはわかりません。 – Ruslan
@dvisco X-Rayは基本的に要求ごとに性能パーツを分解するということを覚えておいてください。 SQSにメッセージを送信するWebリクエストがあるとします。そのput操作は処理をブロックしますが、それは要求のサブセグメントで見ることが重要です。しかし、何か別のプロセスであるSQSメッセージを読み、最初の要求の実行時間に負担をかけないものがあります。 – Ruslan