Spring CloudとZipkinを利用した分散トレーシング

14
Spring Cloud と Zipkin とととと とととととととと Spring I/O 2016 報報報 Tommy Ludwig @TommyLudwig Travel Service Development Department, Rakuten Inc.

Transcript of Spring CloudとZipkinを利用した分散トレーシング

Page 1: Spring CloudとZipkinを利用した分散トレーシング

Spring Cloudと Zipkinを利用した分散トレーシングSpring I/O 2016 報告会Tommy Ludwig @TommyLudwigTravel Service Development Department, Rakuten Inc.

Page 2: Spring CloudとZipkinを利用した分散トレーシング

2

元のセッション• Distributed Tracing: how to find Latency in

Production Systems– 分散トレーシング:本番でのレイテンシーの探り方

• 講演者 : Dr. Dave Syer

Page 3: Spring CloudとZipkinを利用した分散トレーシング

3

分散システムの例

Page 4: Spring CloudとZipkinを利用した分散トレーシング

4

ログでリクエストの追跡Log correlation

Page 5: Spring CloudとZipkinを利用した分散トレーシング

5

Log correlation• 分散されたシステム(マイクロサービスなど)で、リクエストの追跡が難しい

– 各サーバに SSHし、ログを確認するか(しないよね?!)– あるリクエストの startから endまでの全サービスのログが見たい

• MDCというログの機能を利用し、ユニーク IDを追加

• その IDをリクエストと一緒にサービスからサービスへ渡す

Page 6: Spring CloudとZipkinを利用した分散トレーシング

6

トレーシング用語

• Span – ひとつのサービス(境界)内の処理• Trace – リクエストの startから endまで含む Span• Tags – 好きな追加情報をリクエストに付与する

– Key/value: ビジネスイベント種類、 URL、 IPアドレスなど

• http://opentracing.io/

Page 7: Spring CloudとZipkinを利用した分散トレーシング

7

Spring Cloud Sleuthで実現• Spring Bootが前提条件

• spring-cloud-sleuthを追加するだけ

• ELK・ Splunkなどで収集されたログの分析ができる

Page 8: Spring CloudとZipkinを利用した分散トレーシング

8

Integrations• HTTP

– 呼ばれた時は Filterで– 呼ぶ時は RestTemplate

• @Beanで指定を忘れずに

• @Async• @Scheduled• Messaging

– Spring Integrationで

• Zuul• Hystrix• Feign• RxJava

• Documentation

Page 9: Spring CloudとZipkinを利用した分散トレーシング

9

レイテンシー分析Latency analysis

Page 10: Spring CloudとZipkinを利用した分散トレーシング

10

レイテンシー分析• システムのどこがなぜ遅かったかを容易に特定するのが目的• 一つのユーザリクエストの中、どのサービスがどれくらい時間かかったか• 見える化し、ドリルダウンもできると、未知の問題に気づき、レイテンシー問題に対する自発的なカルチャーになる

Page 11: Spring CloudとZipkinを利用した分散トレーシング

11

Zipkin• Sleuthが付与するデータを見える化• UIも APIも提供し、データを様々なデータスト

アに保存できる – Cassandra, Elasticsearch, MySQL

Page 12: Spring CloudとZipkinを利用した分散トレーシング

12

サンプルで見てみましょうLive demo

Page 14: Spring CloudとZipkinを利用した分散トレーシング

14

エンジニア採用http://corp.rakuten.co.jp/careers/engineering/

Drag picture to placeholder or click icon to add