前回の記事「分散サービストラッキング(Logstashの統合)」を通じて、ELKプラットフォームが提供する収集、保存、検索などの強力な機能を利用できるようになり、トラッキング情報の管理と利用が非常に便利になりました。ただし、ELK プラットフォームのデータ分析ディメンションでは、リクエスト リンクの各段階での時間遅延が考慮されていません。多くの場合、リクエスト リンクをトレースする理由の 1 つは、コール リンク全体の過度の遅延のボトルネックの原因を見つけること、または分散システムの遅延監視などの時間関連の要件を満たすことです。現時点では、ELK のようなログ分析システムはやや弱いようです。このような問題には、Zipkin を導入すると簡単に解決できます。 Zipkin の紹介 Zipkin は、Google Dapper をベースにした Twitter のオープンソース プロジェクトです。これを使用して、各サーバーのリクエスト リンクの追跡データを収集し、提供される REST API インターフェイスを使用して追跡データを照会し、分散システムの監視プログラムを実装することで、システム内の遅延増加の問題を迅速に発見し、システム パフォーマンスのボトルネックの根本原因を見つけることができます。開発指向の API インターフェースに加えて、追跡情報を直感的に検索したり、リクエスト リンクの詳細を分析したりするのに役立つ便利な UI コンポーネントも提供します。たとえば、一定期間内の各ユーザーリクエストの処理時間を照会できます。 上の図は、4 つのコア コンポーネントで構成される Zipkin の基本アーキテクチャを示しています。
HTTP コレクション Zipkin の統合は Spring Cloud Sleuth に自動構成でカプセル化されているため、簡単に導入して使用できます。 Sleuth と Zipkin の基本的な統合プロセスを詳しく見てみましょう。主に2つのステップに分かれています。 ステップ1: Zipkinサーバーを構築する zipkin-server という名前の基本的な Spring Boot アプリケーションを作成し、次のように pom.xml に Zipkin Server の依存関係を導入します。
上記のプロジェクトを作成したら、それを起動して http://localhost:9411/ にアクセスします。 Zipkin 管理ページは次のように表示されます。 ステップ2: アプリケーション用のZipkinサービスを導入して構成する Zipkin サーバーの構築が完了したら、追跡情報を Zipkin サーバーに出力するようにアプリケーションを構成する必要があります。以前実装した trace-1 と trace-2 を例として、次の変更を加えてみましょう。
テストと分析 この時点で、Zipkin サーバーに接続するための基本的な作業はすべて完了しました。引き続き eureka-server、trace-1、trace-2 を起動し、いくつかのテスト実験を行って、その動作メカニズムを予備的に理解することができます。 まず、trace-1 インターフェース (http://localhost:9101/trace-1) にいくつかのリクエストを送信します。ログ内のトレース情報の最後の値が true の場合、トレース情報が Zipkin サーバーに出力されることを意味します。したがって、この時点で、Zipkin Server 管理ページに移動し、適切なクエリ条件を選択し、[トレースの検索] をクリックして、ログに表示されたトレース情報をクエリできます (ページの右上隅にある入力ボックスで、ログ内のトレース ID に従って検索することもできます)。次のページを参照してください。 以下の trace-1 エンドポイントをクリックすると、懸念されるリクエスト時間の消費など、Sleuth によって収集された詳細情報も取得できます。 ナビゲーション バーの [依存関係] メニューをクリックすると、追跡情報分析に基づいて Zipkin Server によって生成されたシステム要求リンク依存関係グラフも表示できます。 メッセージミドルウェアコレクション Zipkin を統合する場合、Spring Cloud Sleuth は HTTP 経由でトレース情報を収集するだけでなく、メッセージ ミドルウェアを通じてトレース情報の非同期収集もカプセル化します。 Spring Cloud Stream を組み合わせることで、アプリケーション クライアントがトレース情報をメッセージ ミドルウェアに簡単に出力できるようになり、Zipkin サーバーはメッセージ ミドルウェアからこのトレース情報を非同期的に使用できるようになります。 次に、以前に実装した trace-1 および trace-2 アプリケーションと zipkin-server サーバーに基づいていくつかの変更を加え、メッセージ ミドルウェアを通じてトレース情報を収集します。変換は非常に簡単です。すぐに実装するには、プロジェクトの依存関係と構成ファイルにいくつかの調整を加えるだけです。以下では、クライアントとサーバーの変換について詳しく説明します。 ステップ1: クライアントのトレース1とトレース2を変更する
ステップ2: zipkin-serverサーバーを変更する zipkin-server サーバーがメッセージ ミドルウェアから追跡情報を取得できるようにするには、pom.xml でメッセージ ミドルウェアの収集とカプセル化のためのサーバー側依存関係 spring-cloud-sleuth-zipkin-stream を導入するだけで済みます。同時に、使用される特定のメッセージ ミドルウェアをサポートするために、メッセージ ミドルウェアのバインダー実装も導入する必要があります。たとえば、RabbitMQ を例にとると、依存関係に次のコンテンツを追加できます。
spring-cloud-sleuth-zipkin-stream 依存関係は、メッセージ ミドルウェアからトレース情報を収集するためのコア カプセル化であり、メッセージ ミドルウェアを統合するためのコア依存関係、zipkin サーバーのコア依存関係、およびその他のよく使用される依存関係 (たとえば、データ ストレージを拡張するための依存関係、テストをサポートするための依存関係など) が含まれます。ただし、このパッケージは zipkin のフロントエンド依存関係 zipkin-autoconfigure-ui を導入しないことに注意してください。使いやすさのために、ここでも参照します。 テストと分析 上記の変換が完了したら、eureka-server、trace-1 および trace-2、zipkin-server の起動を継続し、RabbitMQ も実行状態であることを確認します。この時点で、RabbitMQ コントロール ページに sleuth という名前のスイッチが表示されます。これは、zipkin メッセージ ミドルウェア コレクター実装で使用されるデフォルトのトピックです。 ***、以前の検証方法を使用し、trace-1 インターフェースにいくつかのリクエストを送信します: http://localhost:9101/trace-1。サンプリングされたトレース情報がある場合 (デバッグ時に、各トレース情報を収集するために AlwaysSampler サンプリング メカニズムを設定できます)、RabbitMQ コントロール ページでメッセージが sleuth exchanger に送信されたことを確認できます。同時に、zipkin サーバーの Web ページで対応するトレース情報を検索することもできます。これで、メッセージ ミドルウェアを使用してトレース情報を収集するタスクは完了です。 完全な例: 読者は、自分の好みに応じて、次の 2 つのリポジトリで trace-1 プロジェクトと trace-2 プロジェクトを表示することを選択できます。 Github: https://github.com/dyc87112/SpringCloud-Learning/ gitee: https://gitee.com/didispace/SpringCloud-Learning/ 【この記事は51CTOコラムニスト「Zhai Yongchao」によるオリジナル記事です。転載の許可を得るには、51CTO を通じて著者に連絡してください。 この著者の他の記事を読むにはここをクリックしてください |
<<: VMware が新たなエコシステムの構築に向けて Cloud Harbor を立ち上げ
>>: Aruba、モバイルファースト アーキテクチャを推進し、未来のインテリジェント デジタル ワークプレイスを実現
最近、私がSEOの基礎知識について語っていることに気づいた人もいるかもしれません。実は、SEOは基礎...
概要:6月22日、女性服ブランドHan Du Yisheが盛大なウェブマスターカンファレンスを開催し...
ウェブサイト所有者の90%は、自分のウェブサイトが標準に最適化されており、コンテンツが完璧で、ユーザ...
Pogoplug、初めて聞きましたが、公式の情報によると、すでに従業員が50人いて、米国カリフォルニ...
こんな風に感じたことはありませんか。Baidu で何かや質問を検索したとき、返される結果が満足のいく...
コンテンツが王様で外部リンクが女王だった時代は過ぎ去り、検索エンジンは近年絶えず改良され、外部リンク...
一定のライティングスキルを持つことは、インターネット マーケターの基本的なスキルであると言えるでしょ...
組織が人々と財産の安全とセキュリティの向上を求めているため、ビデオ監視の需要は毎年増加し続けていま...
私たちが行うすべての SEO の最終目標はコンバージョンであるため、コンバージョン率が最終目標となり...
2月1日、UCloudは上海聯通のパートナーとして、「未来に向けて共に働く」をテーマにした上海聯通2...
ウェブサイトのバージョンを更新することは一般的です。ウェブサイトを公開時から「変更なし」のままにして...
ウェブサイト診断のヒント2012年1月18日午前10時46分投稿者: Google 中国語検索品質チ...
著名な企業ドメイン名の投機的かつ悪意のある登録は、指定された期間内に取り消されます。重慶市第五中級人...
Raksmart は今月、大規模な VPS プロモーションを開催しています。1G メモリと無制限トラ...
1. クアイボは今日トラブルに巻き込まれた:多数の警察がその巣を襲撃したKuaiBoが「心機一転」し...