ログイン / 登録 アカウント

マイクロサービス

Jaeger とは

Jaeger は、分散サービス間のトランザクションをトレースするためのオープンソース・ソフトウェアです。複雑なマイクロサービス環境の監視とトラブルシューティングに使用されます。

分散トレースとは

分散トレースは、マイクロサービス間の複雑な相互作用におけるイベントのチェーン全体を表示および理解するための方法です。

先進的なクラウドネイティブ・ソフトウェア開発は、マイクロサービス、すなわち、それぞれが異なるコア機能を提供する独立したサービスに依存しています。ユーザーがアプリケーションでリクエストを作成すると、独立した多くのサービスが応答して結果を生成します。

アプリケーション内の 1 回の呼び出しで、互いに対話するさまざまなサービスをいくつも呼び出すことができます。開発者やエンジニアは、問題の発生時やリクエストの実行が遅い場合に、どのように問題を切り分けることができるでしょうか。すべての接続の状況を常に把握する方法が必要になります。

このような場合に役立つのが分散トレースです。多くの場合、分散トレースはサービスメッシュ (マイクロサービスを管理および監視する方法) の一部として実行されます。

Jaeger は、分散トレースを使用して、さまざまなマイクロサービスを介したリクエストのパスを追跡します。推測するのではなく、呼び出しのフローを視覚的に確認することができます。

トランザクションに関する情報が整理されると、デバッグと最適化に役立ちます。Jaeger のツールは、分散トランザクションを監視し、パフォーマンスとレイテンシーを最適化するとともに、問題解決の方法である根本原因分析 (RCA) を実行します。

Jaeger のオープンソース・コミュニティ

オープンソース・プロジェクトである Jaeger には、何百人ものコントリビュータで構成されるコミュニティが存在します。Jaeger は、ベンダーに依存しない OpenTracing API と計装をベースに構築されています。

Jaeger は、ライドシェアリング企業の Uber によって 2015 年にオープンソース・プロジェクトとして立ち上げられました。2017 年に CNCF (Cloud Native Computing Foundation) インキュベーション・プロジェクトとして承認され、2019 年にインキュベーション段階を終えました。

Jaeger の用語とコンポーネント

トレース:Jaeger における、実行リクエストの表示単位。トレースは、システムを介したデータや実行パスを示します。 

スパン:トレースの構成要素。スパンは Jaeger における論理上の作業単位です。各スパンには、オペレーション名、開始時刻、および期間が含まれます。スパンはネストされ、順序が付けられます。

Jaeger には、スパンとトレースを収集、保存、視覚化するために連携するいくつかのコンポーネントがあります。

Jaeger Client:分散トレース用の OpenTracing API の言語固有の実装が含まれています。これらは、手動での使用も、さまざまなオープンソース・フレームワークでの使用も可能です。

Jaeger Agent:UDP を介して送信されたスパンをリッスンするネットワークデーモンで、対象アプリケーションと同じホスト上に配置します。通常、Kubernetes のようなコンテナ環境のサイドカーを介して実装されます。

Jaeger Collector:スパンを受信し、処理キューに格納します。

永続的なストレージバックエンドを必要とするため、Jaeger はスパンストレージ用のプラグ可能なメカニズムも持っています。 

Query:ストレージからトレースを取得するサービスです。

Jaeger Console:分散トレースデータを視覚化するユーザー・インタフェースです。

Jaeger と Red Hat

Jaeger は、デフォルトで Red Hat® OpenShift® Service Mesh (オープンソースのサービスメッシュである Istio の実装を含む) の一部としてインストールされます。

この分散トレース実装には、多くのメリットがあります。Jaeger は Istio の可観測性コンソールである Kiali と統合できます。Jaeger のバックエンドは、単一障害点のない高いスケーラビリティを実現するように設計されています。Jaeger は、さまざまなコンポーネントからのデータを接続して、完全なエンドツーエンドのトレースを作成することができます。Jaeger には、Zipkin との後方互換性もあります。

Red Hat OpenShift Service Mesh を使い始める