1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Jaeger で分散トレーシングをはじめる

Last updated at Posted at 2020-12-17

分散トレーシング

導入前の課題

  • マイクロサービスアーキテクチャが拡大した際にサービス同士の依存関係を把握するのに時間がかかる
  • 分散サービスが肥大化するごとに障害が発生した際の特定やデバッグが困難になる

分散トレーシングとは

  • サービス間通信を追跡して情報収集を行うこと
  • サービス間に跨った障害解析
  • 複雑なサービスの呼び出し関係の把握
  • パフォーマンスのボトルネックの特定

OpenTracing

分散トレーシングの標準仕様規格

  • トレース情報のデータフォーマット
  • データ収集用バックエンドのためのAPI仕様

OpenCensus

  • メトリック収集および分散トレーシングを行うためのライブラリ集
  • Google社が社内で利用しているメトリック収集およびトレーシングのライブラリ集であるCensusのオープンソース実装
  • データを収集するところまでの役割を持っていて、グラフ化したり分析したりするのは他のトレーシング/モニタリングサービスの役割

OpenTelemetry

トレース情報の概念モデル

  • トレース
  • スパン
  • スパンコンテキスト

スクリーンショット 2022-08-10 16.46.25.png

トレース

  • 連鎖的に実行される一連のサービスの呼び出しを追跡して記録したトレース情報
  • 階層構造を持ったスパンの集合体

スパン

  • 個々のサービスがリクエストを受け、それに応答するまでの単位

スパンコンテキスト

  • 複数のスパンを連鎖的なサービス呼び出しとして関連づけるための識別子となる情報
  • サービスからサービスを呼び出す際にスパンコンテキストを伝播させることによって複数のスパンを関連づけられる

Jaeger

開発元

  • Uber

影響を受けたサービス

  • Google Dapper
  • Zipkin

仕様

  • スパンの生成は各アプリケーション内で行う
  • Istioを使っている場合はistio-proxy(Envoy)がJaeger-collectorにスパンの送信を行う

Architecture

スクリーンショット 2022-08-10 17.13.45.png

istio が導入されている場合

  • istio-proxy が jaeger collector にスパン情報を送付する
  • アプリケーションの改変を最小限に抑えることができる
  • アプリケーションの改変をゼロにすることはできない
    • スパンコンテキストを伝播するための情報を他のサービス呼び出しの際にリクエストヘッダに付与する作業
    • カスタムヘッダ
      • x-request-id
      • x-b3-traceid
      • x-b3-spanid
      • x-b3-parentspanid
      • x-b3-sampled
      • x-b3-flags
      • x-ot-span-context
    • Ingress-Gateway を通して流入したリクエストには Header 情報が付与されている
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?