Jeagerの概要を調査したので、記事を描いてみました。
- 分散トレーシング
- 分散トレーシングとは
- SpanとTraceの関係
- Propagation
- Jeager
- Jeagerとは
- Jeagerを操作してみる
分散トレーシング
分散トレーシングとは
分散トレーシングとは、マイクロサービスのような分散されたシステムにおいて、障害の検知や原因特定を迅速化するために考えられた、サービス間通信の監視を行う概念です。
SpanとTraceの関係
分散トレーシングの基本概念であるSpanとTraceの関係について以下に示します。
- Span・・・サービス単位の処理
- Trace・・・任意のリクエストにおけるSpanの集合体

Propagation
分散トレーシングでは、Span同士でメタデータを伝播(Propagation)させています。以下のように、HttpヘッダーにSpanのメタデータを埋め込み、Spanの関係を把握しています。

Jeager
Jeagerとは
分散トレーシングを体現したツールは、Zipkin、Hawkularなど様々あります。Jeagerはその中の一つで、Uber社がGo言語で開発した分散トレーシングシステムです。
CNCFにホストされたのがきっかけで、分散トレーシングシステムの代表例でもあります。IstioをOperatorでインストールする場合は、Jeagerも一緒にインストールすることができ、Operatorによって構成されます。
アーキテクチャは以下の通りです。jeager-clientが取得したログをjeager-agentを経由してjeager-collectorが受け取り、DBにログを保管します。ユーザーはGUIを通して、このDBを参照することができます。

Jeagerを操作してみる
以下の記事で、MicroK8sにIstioをインストールした時に、一緒にインストールされていたJeagerを使って簡単に確認したいと思います。
MicroK8sでistioによるABテストを試してみる(1/2)
MicroK8sでistioによるABテストを試してみる(2/2)
アクセスするとこんな画面でした。キャラクターが可愛い件について。

適当に検索してみると、トレースログ毎に発生日時とレスポンスタイムのグラフに表示されていました。また、それぞれのトレースログの詳細が確認できますし、トレースログ同士を比較する機能までついていました。

トレースログをクリックすると、上で説明したようなTraceとSpanが確認できました。

Httpリクエストヘッダーも確認することができました。

右上の「Trace Timeline」を「Trace Graph」に変更すると、以下のように依存関係が確認できました。

以上です。本当に概要だけですが、参考になれば幸いです。