最近、プロジェクトに簡単な分散リクエスト追跡機能を追加したいと考えています。フロントエンドからゲートウェイへのリクエストを開始し、ゲートウェイから Spring Cloud マイクロサービスを呼び出します。これらのプロセス中に、ログから分散 ID リンクが表示されることを期待します。問題のトラブルシューティングを容易にするために、リクエスト ID を通じてリンク全体を追跡できます。
既存のソリューションとしては、当然ながら SkyWalking、Spring Cloud Sleuth、Zipkin などのコンポーネントを使用することになります。ただし、ログクエリを容易にするために、さまざまなサービスで常に実行できる ID を記録することが主な目的であるため、複雑なコンポーネントをあまり導入したくありません。最終的に、MDC を介してログに追跡 ID を出力し、Feign と RestTemplate のマイクロサービスにリクエスト ID を渡すことにしました。 主にいくつかのステップが含まれます:
MDCC MDC (Mapped Diagnostic Context) は、マルチスレッド条件下でのログ記録を容易にするために Log4j と Logback によって提供される機能です。 MDC は、キーと値のペアを追加できる、現在のスレッドにバインドされたハッシュ テーブルとして考えることができます。 MDCの主な業務:
TraceIdツールクラスを追加しました まず、TRACE_ID の定数値と TRACE_ID の設定および生成方法を定義する TraceIdUtils ツール クラスを追加します。以降のコードはこの推定クラスを通じて操作されます。
WebFilter経由でTraceIdフィルターを追加する リクエスト ヘッダーから TraceIdUtils.TRACE_ID に対応する値を取得するために、GenericFilterBean を追加します。この値は、フロントエンドがリクエストを開始するとき、またはマイクロサービス間で渡されるときに伝達されます。値がない場合、TraceIdUtils.setTraceId によって値が生成されます。
SpringBoot スタートアップ クラスに @ServletComponentScan アノテーションを追加することを忘れないでください。そうしないと、カスタム フィルターは有効になりません。 「com.yourtion.trace.filter」は、TraceIdFilter が配置されているパッケージ名です。
FeignにTraceIdを追加する @FeignClient プロキシ クラスは実行時に Spring コンテキストの RequestInterceptor を使用するため、独自のインターセプターをカスタマイズして Spring コンテキストに挿入し、リクエスト コンテキストにカスタム リクエスト ヘッダーを追加できるようにします。
RestTemplate に TraceId を追加する 一部のリクエストは RestTemplate を通じて開始されます。以前は、RestTemplateConfig 構成クラスを独自に実装していました。今回は、関連する構成に以下を追加しました。
この時点で、リンクへの TraceId の追加は完了しており、残っているのはそれをログに印刷することだけです。 Log4j2のレイアウト形式を変更する MDC に traceId を出力するために、ログのレイアウト形式を変更します。
この時点で変更は完了です。 |
<<: 2021 年に組織が完璧なクラウド コンピューティング戦略を作成するための 3 つの柱
>>: IBMはまたもや戦いに敗れた。クラウド コンピューティングは Big Blue に悪影響を及ぼしていますか?
北京、2017 年 11 月 30 日 - Microsoft Research Asia は、「イ...
ウェブサイトがユーザーを維持し、直帰を減らし、コンバージョンを向上させる方法は、常に注目の話題です。...
データ分析その他マーケティングの役職や職務には、一般的にデータの機密性に関する潜在的な要件がいくつか...
公式ベースイメージを使用してアプリケーションをビルドするアプリケーションを構築する際に、オペレーティ...
[51CTO.comからのオリジナル記事] デジタル経済は長い間、世界経済の重要な部分となり、徐々に...
Weiboは今や人々の生活に欠かせないものとなり、仕事でも勉強でも、私たちはいつでもWeiboを利用...
[[349842]]ハイブリッド クラウドの動的な性質により、組織は戦略と実行を定期的に見直し、更新...
今は4月ですが、卒業まであと2か月しかないため、多くの都市の大学生は就職活動に焦っています。現在、多...
Baidu Webmaster Platform は公式に発表しました: Baidu ページランクと...
意外にも、世論の注目から王力宏を救ったのはヴィヤだった。 12月20日、「ヴィヤの脱税」のニュースが...
[51CTO.comからのオリジナル記事]現在、疫病と政治環境の影響により、多くの不確定要素が重なり...
6月28日はウェブマスターにとって暗黒の日でした。大量のウェブサイトがBaiduのデータベースから追...
[51CTO.com からのオリジナル記事] 360 Enterprise Security Gro...
layer.ae のシンガポール VPS ビジネスは、10Gbps の大きな帯域幅、AMD Ryze...
よく、企業が資金調達をしようとしているときや買収交渉をしているときに、この質問を受けます。「私の会社...