Technologies社によって開発され、その後オープンソース化されたGo言語の分散トレーシングシステムです。特定、障害発生時のトラブルシューティングが非常に難しくなりました。この問題を解決するために生まれたのが分散トレーシングシステムです。OpenTracingと互換性のあるデータモデルを持ち、各種言語(Go、Java、Node.js、Python、C++)用の計測ライブラリを提供します。複数ある分散トレーシングシステムの中では、唯一CNCFの卒業プロジェクトであり、今後のさらなる展開が期待されるOSSです。・スパン・トレースの2つがあります。この関係性を示すのが以下の図となります。保持する作業の論理単位を表します。複数のスパンはネストされ、その関連を順序付けることができます。トレースはシステムを通るデータ/実行パスのことであり、各スパンの有向非巡回グラフ(上図の左側のグラフ)として表すことができます。Jaegerのコンポーネントの構成(all-in-oneバイナリでの例)については、以下の図の通りとなります。出典:https://www.jaegertracing.io/docs/1.37/architecture/それぞれの役割は以下の通りです。jaeger-clientアプリケーションに組み込まれたクライアントライブラリ(複数の言語に対応)により、リクエストの受信ごとにスパンが作成され、分散トレーシングに必要なコンテキスト情報(トレースID、スパンID、baggage)が付加されます。サンプリング数の調整もここで行われます。作成されたスパンはバックエンドスレッドにより、UDP経由でjaeger-agentに送信されます。jaeger-agentjaeger-clientからのスパンを受信するデーモンです。ホストおよびコンテナに配備されます。こちらもバッチ処理により、jaeger-collectorにトレースをpushします。jaeger-collectorjaeger-agentからトレースを受け取り、検証、インデックス付与および変換を行った後、ストレージに格納します。ストレージとしては、現在はCassandra、Elasticsearch、Kafka(中間バッファ)をサポートします。UIを表示するためのサービスです。分散システムの監視およびトラブルシューティングマイクロサービス化された分散システムにおいて、以下のようなモニタリングやトラブルシュートに利用できる。高拡張性Jaegerバックエンドは、単一障害点なく、業務のニーズに合わせて拡張できるように設計されている。Uberでの事例では、あるJaeger環境は1日数十億のスパンの処理を実現している。UI、計測ライブラリは、OpenTracing標準をサポートするために0からデザインされている。5.x/6.x/7.x)をサポートしている。DynamoDB、Logz.ioなどのデータベースへの対応が進行中である。UIは、Reactのような有名なオープンソースフレームワークを使ったJavascriptにより実装されている。1.0では、そのいくつかのパフォーマンス改善により、数万のスパンがあるトレースを表示できるようになった。Native対応Jaegerバックエンドは、複数のDockerイメージとしても配布される。そのバイナリではコマンドラインや、環境変数、複数のフォーマット(yamlやtomlなど)の設定ファイルによる様々な設定方法をサポートする。chartによって、アシストされる。Prometheusメトリックに対応すべてのJaegerバックエンドコンポーネントは、デフォルトでPrometheusメトリック(他のメトリックバックエンドもサポート)を公開する。zapを利用して、標準出力に書き込まれる。先進的な機能を利用するためにはJaegerクライアントライブラリを利用することが推奨されるが、すでにZipkinライブラリを使用した計測環境が構成されている場合には、すべてのコードを書き換えなくてもよい。v1/v2、Protobuf)のスパンを受け取ることによるZipkinとの後方互換性を提供する。Zipkinバックエンドからの切り替えは、Zipkinライブラリから通信ルートをJaegerバックエンドに向けるだけです。種類のサービスグラフをサポートする。ArchitectureにはAとBの間とBとCの間にはネットワークの呼び出しを含むいくつかのトレースが存在しますが、A-B-Cの完全なチェーントレースはありません。AがCに依存しているとはいえません。このグラフのノード粒度はサービスのみでサービスエンドポイントは含まれていません。DependencyGraphではAがCに推移的な依存関係をもっています。ノード粒度をサービスとサービスエンドポイントの間で変更することが可能です。サービスパフォーマンスモニタリングスパンデータをRED(Requests,Errors,Duration)メトリクスとして可視化し、統計的に顕著なリクエスト/エラー率やレイテンシーを持つサービスやオペレーションをハイライトします。Jaegerのユースケース分散トレーシングシステムとしてのJaegerの主なユースケースは以下の通りです。1.11以上がインストールされている必要がある。公式サイトでは、以下のOSに対応したバイナリが用意されている。UI、collector、query、agent、インメモリストレージを含むall-in-oneイメージや、それぞれの個別のDockerイメージが提供されている。Jaegerと類似性のあるOSS類似の機能を持ったOSSでは、Zipkin、Skywalkingがあります。それぞれの機能差異は以下の通りです。クライアントライブラリの言語によっても提供される機能に差があるため、詳細は以下のURLを参照ください。https://www.jaegertracing.io/docs/1.37/client-features/JaegerのライセンスJaegerは、Apache2.0ライセンスです。License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。Git-HubJaegerのサポートNRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。詳細は下記ページをご確認ください。オープンソース年間サポートサービスTweetOpenStandiaに関する資料請求・お問い合わせはこちら※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。▲このページのTOPへ。