SlideShare a Scribd company logo
分散トレーシング技術について
About me
Mahito Ogura (小倉真人<m.ogura@ntt.com>)
NTTコミュニケーションズ 技術開発部
業務:クラウドや分散システムの調査検証
● コムウェア入社(H21)2014年に異動で現職
● インフラ構築(Chef, Ansible)
● アプリケーション開発(Ruby)
● OpenStackとか分散ミドルとかコンテナ
● 採用のお手伝いとか各種イベント業, etc...
はじめに
現代のサービスは複雑化され、そのシステムは大規模に分散することが多い。
特にサービスの機能ごとに分けて作り、それらを疎結合させるMicroservicesアーキテク
チャの流行もあり、機能ごとに開発チームが異なることや、開発言語が違うことが増え、
サービス内部はより分散し複雑化している。
分散し複雑化したサービスにおいて機能ごとの関係性を把握することは難しく、エラーや
性能問題などが起きた際にその原因特定が非常に難しくなる。
こうした問題に取り組むべく、分散されたサービス内のリクエストをトレース可能な、分散
トレーシング技術が現在注目を浴びている。
分散トレーシングの歴史
2003年「Magpie: Online Modelling and Performance-aware Systems」
2007年「X-Trace: A Pervasive Network Tracing Framework」
2010年「Dapper, a Large-Scale Distributed Systems Tracing Infrastructure」
以降、Dapperの論文を元にZipkinやDapperとZipkinをベースにしたappdash、HDFSや
HBaseに使われているHTraceなどのOSSが開発される。
また、最近では分散Tracingの仕様やAPIを取りまとめたOpenTracingが登場し、
OpenTracingの仕様を実装したライブラリや、上記OSSのOpenTracing対応が進められて
いる。
インターネットサービスはしばしば複雑に実装され、大規模に分散したシステムとなって
いることがある。
これらのシステムはソフトウェアモジュールの集合であり、各ソフトウェアモジュールは、
開発チームが異なることや、開発言語が異なること、そして何千台のマシンの複数のレ
イヤにまたがることがある。
こうした環境においてシステムのしくみの理解や、性能問題の原因特定は難しく、一度
問題が起きると解決に至るまでに膨大なコストがかかることがある。
こうした問題を解決するために、各システムの挙動や性能を把握することができる分散
トレーシング技術が注目を集めている。
なぜ分散トレーシングが注目されているか
参考:OpenStackのアーキテクチャ
分散トレーシングに必要なしくみは次の2つ
● 分散トレーシングのしくみ(ライブラリ含む)
● トレースの結果をモニタリングするためのしくみ
また、トレーシングがシステムの性能に影響を及ぼさないよう、
一部の処理だけをトレースするためのサンプリングレートを設定するしくみを
設けている分散トレーシングツールも存在している(ex.Zipkin, OpenTracing)
分散トレーシング
Trace:Span全体のStartからFinishまでを含むSpanの集合体
Span:ひとつのサービス(境界)内の処理。以下の情報が含まれる
分散トレーシング(OpenTracing)用語解説 -1/2-
Trace
Span
オプション
● Span Tags
● Span Logs
● References
○ 他Spanとの関係性
分散トレーシング(OpenTracing)用語解説 2/2
必須
● Operation Name
● Start / Finish Timestamp
● Span Context
○ Baggage Items
○ tarace / span ID
以下例では、Traceは8つのSpanから構成されている。
各Spanの間には関係性があり有効巡回グラフ(DAG)で表すことができる。
Spanの関係図(DAG)
SpanとReferenceについて
ChildOf Reference:
親Spanが依存する子Spanとの関係(例:RPC, SQL)
FollowsFrom Reference:
親Spanが依存しない子Spanとの関係(例:非同期処理)
分散トレーシングのユースケース
● プログラム内の関数レベルのトレース
● サーバのエンドポイントのトレース
● クライアントコールのトレース
● 分散環境におけるデータの分散 / 転送
● イベントのロギング
● メッセージバス(MQ and Pub/Sub)シナリオのトレース
OpenTracingについて
OpenTracingは、一般的なプラットフォームに向けて、一貫したベンダ非依存なAPIを提
供することにより、開発者に容易にシステムへトレーサの追加、またはトレーサの切り替
えを行うことが出来るしくみを提供する、分散トレーシングの実装である。
また、OpenTracingは分散トレーシングとしてのOSSの実装以外にも、プラットフォーム固
有のトレーサーに向けた共通仕様も用意しており、他の分散トレーシングツールはこの
仕様を実装することで、OpenTracing互換のトレーサーとして実装することが出来るた
め、ユーザは設定の変更だけでトレーサの切り替えを行うことができる。
OpenTracing仕様を実装したトレーサー
● Zipkin:Twitter社が開発したトレーサー
● Jaeger:Uber社が開発したトレーサー
● Appdash:sourcegraph社がGo言語で開発した軽量なトレーサー
● LightStep:OpenTracing互換のトレーサー
● Hawkular:OpenTracing-Javaをサポート
● Instana:OpenTracingのJava, Node.js, Goをサポート
● sky-walking:OpenTracing-Javaをサポート
● inspectIT:OpenTracing-Javaをサポート
● stagemonitor:Javaのバイトコードからトレーシングを行う
Zipkin
GoogleのDapperを参考に作られた分散トレーシングシステム
分散システムのレイテンシ問題の
トラブルシューティングに必要な
データを収集し(Zipkin)、
システムの依存関係を参照するための
UI(Zipkin UI)を提供する
アーキテクチャは右図参照
● ReporterはTransportにデータを転送
● Transporはcollectorにデータを転送
● CollectorはStorageにデータを格納
参考:http://zipkin.io/pages/architecture.html
Jaeger
Uber社がGo言語で開発している分散トレーサーとそのUI
● 2017年9月にプロジェクトがCNCFにホストされることになった
Go言語で書かれた自前のモニタリングツールが用意されている
Go, Python, Node, JavaなどのTracerが用意されている
● Python 3には未対応
Architecture
出典:http://jaeger.readthedocs.io/en/latest/architecture/
分散トレースのしくみ(ex. HTTP Request)
HTTPヘッダに格納された親スパンの
情報をデシリアライズ(extract)
現在のSpanの情報をシリアライズして
HTTPヘッダに格納(inject)
Serialize span ID to a string
{trace_id}:{span_id}:{parent_id}:{flags}
出典:http://jaeger.readthedocs.io/en/latest/architecture/
sourcegraph社がGo言語で開発した軽量なトレーサー
Go言語で書かれた自前のモニタリングツールが用意されている
● 一応OpenTracingへの対応はしているとドキュメントに書かれている
● 開発の更新は2016/11で止まっている(2017/9/19時点)
● DAGの表示はできない
Go, Python, Ruby(サードパーティー)などのTracerが用意されている
● しかしながらRubyはOpenTracing未対応かつ壊れている可能性が高い
参考:Appdashを動かしてみた - Qiita
Appdash
LightStep
OpenTracing互換のTracer
● Go / JavaScript / Python / PHP / Ruby / Java / iOS / Android
MonitoringはSplunk/kibanaを利用する模様
詳細はLightStep社に問い合わせが必要
Hawkular
RedHatが支援している既存のモニタリングの課題を解決するためのツール
以下の4つの機能を有する
● Federated Alerting
● Distributed Tracing
● Metrics TSDB
● ManageIQ Provider
分散トレーシングについてはJaegerとコラボをすることでOpenTracing対応をしているらし
い。
サンプル(OpenStack Novaへの実装)
nova-computeがnova-schedulerにインスタンスの情報を同期する流れ
22
nova-compute
Queue
<conductor>
RabbitMQ
nova-conductor
Queue
<reply_xxx>
nova-scheduler
Queue
<scheduler>
①
②
③
① call to ”conductor” for DB access
② reply to ①
③ cast to ”scheduler”
Database
Jaeger UI上でのトレース結果
①
① call to ”conductor” for DB access
② reply to ①
③ cast to ”scheduler”
① + ②
②
③
● 分散システムの挙動やレイテンシの把握は難い
● 分散トレーシングの仕様としてOpenTracingがある
● OpenTracing実装として各種ツールがあるが、
現状はUber社が開発をしているJaegerがよさそう
● まだ全体的にドキュメントが足りておらずコードを
読まないとわからないことが多い
まとめ
Presentation by NTT Communications

More Related Content

What's hot (20)

PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
Amazon Web Services Japan
 
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
PPTX
Redisの特徴と活用方法について
Yuji Otani
 
PPTX
分散システムについて語らせてくれ
Kumazaki Hiroki
 
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
PDF
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
 
PPTX
Azure API Management 俺的マニュアル
貴志 上坂
 
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
Amazon Web Services Japan
 
PPTX
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
 
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
 
PPTX
Dockerからcontainerdへの移行
Akihiro Suda
 
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
PDF
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
PPTX
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
 
PDF
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
 
PDF
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
 
PDF
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
Amazon Web Services Japan
 
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
PDF
例外設計における大罪
Takuto Wada
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
Amazon Web Services Japan
 
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
Redisの特徴と活用方法について
Yuji Otani
 
分散システムについて語らせてくれ
Kumazaki Hiroki
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
 
Azure API Management 俺的マニュアル
貴志 上坂
 
20190806 AWS Black Belt Online Seminar AWS Glue
Amazon Web Services Japan
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
 
Dockerからcontainerdへの移行
Akihiro Suda
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
 
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
Amazon Web Services Japan
 
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
例外設計における大罪
Takuto Wada
 

Similar to 分散トレーシング技術について(Open tracingやjaeger) (20)

PPTX
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
apkiban
 
PDF
1分で分かる SoftLayer 監視入門
Masahito Zembutsu
 
PPTX
ペアワークで持続的に成長するチームになろう!
Shinya Nakajima
 
PDF
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
 
PDF
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
日本Javaユーザーグループ
 
PPTX
Cdci for asaserviceera
Takao Tetsuro
 
PDF
マイクロサービスとそれを支えるアーキテクチャー
Tsukasa Kato
 
PDF
Tech on meetup online#01
Kazuya Suda
 
PDF
コンテナは次世代サービスの主流になるか?
SAKURA Internet Inc.
 
PPTX
2画面折り畳みデバイスのアプリ開発について
Shinya Nakajima
 
PDF
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
Takamitsu Nakao
 
PDF
クラウドネイティブトランスフォーメーションのススメ
Hiromasa Oka
 
PPTX
【Tech-Circle #3 & OCDET #7 SDS勉強会】 Ceph on SoftLayer
Nobuyuki Matsui
 
PDF
スマフォセキュリティセミナ(配付用) R 20110417
知礼 八子
 
PDF
Ipメッセージング勉強会
Katsumi Takahashi
 
PPTX
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
Takahiro Fujii
 
PPTX
機械学習によるマーケット健全化施策を支える技術
Hirofumi Nakagawa
 
PDF
CMC_Meetup八子プレゼン 20170412
知礼 八子
 
PPTX
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
Takashi Kaneda
 
PPTX
Kubernetes × 可用性 -- cndjp第3回勉強会
Hiroshi Hayakawa
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
apkiban
 
1分で分かる SoftLayer 監視入門
Masahito Zembutsu
 
ペアワークで持続的に成長するチームになろう!
Shinya Nakajima
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
日本Javaユーザーグループ
 
Cdci for asaserviceera
Takao Tetsuro
 
マイクロサービスとそれを支えるアーキテクチャー
Tsukasa Kato
 
Tech on meetup online#01
Kazuya Suda
 
コンテナは次世代サービスの主流になるか?
SAKURA Internet Inc.
 
2画面折り畳みデバイスのアプリ開発について
Shinya Nakajima
 
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
Takamitsu Nakao
 
クラウドネイティブトランスフォーメーションのススメ
Hiromasa Oka
 
【Tech-Circle #3 & OCDET #7 SDS勉強会】 Ceph on SoftLayer
Nobuyuki Matsui
 
スマフォセキュリティセミナ(配付用) R 20110417
知礼 八子
 
Ipメッセージング勉強会
Katsumi Takahashi
 
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
Takahiro Fujii
 
機械学習によるマーケット健全化施策を支える技術
Hirofumi Nakagawa
 
CMC_Meetup八子プレゼン 20170412
知礼 八子
 
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
Takashi Kaneda
 
Kubernetes × 可用性 -- cndjp第3回勉強会
Hiroshi Hayakawa
 
Ad

More from NTT Communications Technology Development (20)

PDF
クラウドを最大限活用するinfrastructure as codeを考えよう
NTT Communications Technology Development
 
PPTX
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
NTT Communications Technology Development
 
PDF
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
NTT Communications Technology Development
 
PPTX
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
NTT Communications Technology Development
 
PDF
SpinnakerとKayentaで 高速・安全なデプロイ!
NTT Communications Technology Development
 
PDF
100Gbps OpenStack For Providing High-Performance NFV
NTT Communications Technology Development
 
PDF
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
NTT Communications Technology Development
 
PDF
AWS re:Invent2017で見た AWSの強さとは
NTT Communications Technology Development
 
PDF
Mexico ops meetup発表資料 20170905
NTT Communications Technology Development
 
PDF
NTT Tech Conference #2 - closing -
NTT Communications Technology Development
 
PPTX
イケてない開発チームがイケてる開発を始めようとする軌跡
NTT Communications Technology Development
 
PDF
GPU Container as a Service を実現するための最新OSS徹底比較
NTT Communications Technology Development
 
PDF
SpinnakerとOpenStackの構築
NTT Communications Technology Development
 
PDF
Troveコミュニティ動向
NTT Communications Technology Development
 
PPTX
Web rtc for iot, edge computing use cases
NTT Communications Technology Development
 
PDF
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
NTT Communications Technology Development
 
PDF
NTT Tech Conference #1 Opening Keynote
NTT Communications Technology Development
 
PDF
NTT Tech Conference #1 Closing Keynote
NTT Communications Technology Development
 
PDF
OpsからみたOpenStack Summit
NTT Communications Technology Development
 
クラウドを最大限活用するinfrastructure as codeを考えよう
NTT Communications Technology Development
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
NTT Communications Technology Development
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
NTT Communications Technology Development
 
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
NTT Communications Technology Development
 
SpinnakerとKayentaで 高速・安全なデプロイ!
NTT Communications Technology Development
 
100Gbps OpenStack For Providing High-Performance NFV
NTT Communications Technology Development
 
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
NTT Communications Technology Development
 
AWS re:Invent2017で見た AWSの強さとは
NTT Communications Technology Development
 
Mexico ops meetup発表資料 20170905
NTT Communications Technology Development
 
NTT Tech Conference #2 - closing -
NTT Communications Technology Development
 
イケてない開発チームがイケてる開発を始めようとする軌跡
NTT Communications Technology Development
 
GPU Container as a Service を実現するための最新OSS徹底比較
NTT Communications Technology Development
 
SpinnakerとOpenStackの構築
NTT Communications Technology Development
 
Troveコミュニティ動向
NTT Communications Technology Development
 
Web rtc for iot, edge computing use cases
NTT Communications Technology Development
 
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
NTT Communications Technology Development
 
NTT Tech Conference #1 Opening Keynote
NTT Communications Technology Development
 
NTT Tech Conference #1 Closing Keynote
NTT Communications Technology Development
 
OpsからみたOpenStack Summit
NTT Communications Technology Development
 
Ad

Recently uploaded (10)

PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 

分散トレーシング技術について(Open tracingやjaeger)