Spring CloudとZipkinを利用した分散トレーシング
-
Upload
rakuten-inc -
Category
Technology
-
view
628 -
download
0
Transcript of Spring CloudとZipkinを利用した分散トレーシング
Spring Cloudと Zipkinを利用した分散トレーシングSpring I/O 2016 報告会Tommy Ludwig @TommyLudwigTravel Service Development Department, Rakuten Inc.
2
元のセッション• Distributed Tracing: how to find Latency in
Production Systems– 分散トレーシング:本番でのレイテンシーの探り方
• 講演者 : Dr. Dave Syer
3
分散システムの例
4
ログでリクエストの追跡Log correlation
5
Log correlation• 分散されたシステム(マイクロサービスなど)で、リクエストの追跡が難しい
– 各サーバに SSHし、ログを確認するか(しないよね?!)– あるリクエストの startから endまでの全サービスのログが見たい
• MDCというログの機能を利用し、ユニーク IDを追加
• その IDをリクエストと一緒にサービスからサービスへ渡す
6
トレーシング用語
• Span – ひとつのサービス(境界)内の処理• Trace – リクエストの startから endまで含む Span• Tags – 好きな追加情報をリクエストに付与する
– Key/value: ビジネスイベント種類、 URL、 IPアドレスなど
• http://opentracing.io/
7
Spring Cloud Sleuthで実現• Spring Bootが前提条件
• spring-cloud-sleuthを追加するだけ
• ELK・ Splunkなどで収集されたログの分析ができる
8
Integrations• HTTP
– 呼ばれた時は Filterで– 呼ぶ時は RestTemplate
• @Beanで指定を忘れずに
• @Async• @Scheduled• Messaging
– Spring Integrationで
• Zuul• Hystrix• Feign• RxJava
• Documentation
9
レイテンシー分析Latency analysis
10
レイテンシー分析• システムのどこがなぜ遅かったかを容易に特定するのが目的• 一つのユーザリクエストの中、どのサービスがどれくらい時間かかったか• 見える化し、ドリルダウンもできると、未知の問題に気づき、レイテンシー問題に対する自発的なカルチャーになる
11
Zipkin• Sleuthが付与するデータを見える化• UIも APIも提供し、データを様々なデータスト
アに保存できる – Cassandra, Elasticsearch, MySQL
12
サンプルで見てみましょうLive demo
13
参考• Spring Cloud Sleuth• Zipkin
• サンプルコード
• 元のスライド
14
エンジニア採用http://corp.rakuten.co.jp/careers/engineering/
Drag picture to placeholder or click icon to add