現在、すべてのSpanに情報を追加するスケーラブルな方法でSpring Cloud Sleuthをカスタマイズする方法を理解しようとしています。Spring Cloud Sleuthですべてのスパンに情報を追加する方法
私がこれまで試してみました:
をGenericFilterBean
とHandlerInterceptorAdapter
の私の独自の実装を使用して、それらにコンストラクタでTracer
を与え、彼らはtracer.addTag("key", "value")
と呼ばれている毎回タグを書き、私は見ていました新しい荷物情報の考え方 - しかし、私はそれをトレース全体としてグローバルに解釈しています - そして、トレースは異なるサービス/マシンにわたるいくつかのリクエストを持っているので、サービス/マシンレベルに関する情報を追加するという私の目的に合わないでしょう。
これまでフィルタとインターセプタからのタグは、いくつかのスパンのためではなく、すべてのためにセットされます、私はspring-cloud-stream-binder-kafka
を通じて私のカフカのトピックに書かれているJSONを検査する際だから私の質問は次のようになります。どのようなタイプのスパンを作成するリクエスト/アクションが存在し、スパンに何かを注入する適切な方法は何か。この実装をいくつかのマイクロサービスに配備したいので、私はそれぞれのメソッドに注釈をつけたり、同様に集中的に働き、そのためにスケーラビリティのあるアプローチをしたくありません。
「SpanAdjuster」は完璧に聞こえます。しかし、@ SpinAdjusterを実装するクラスを登録しようとすると、@Configurationクラスのフィルタとインターセプタの横にトレーサの循環依存関係が発生します。フィルタとインジェクタのコンストラクタを注入する必要があります。私はそれを間違った方法で試していますか?この問題を解決するための推奨方法はありますか? – LST
私はいくつかのコードを表示する必要があると思います。どこかにアップロードできますか? –
しかし、トレーサーはどこにでも必要であり、別の構成で構築されています。サイクリック依存関係はありません。また、スパンがエクスポート可能かどうかをチェックするだけで、スパンに直接タグを設定することもできます。そのようなトレーサを注入する必要はありません。 –