経緯
- Springを使ったWebアプリケーションでログを出していたが、単にログを出すだけでは見づらかったのでSpring Sleuthをいれることにした
構成
- 構成は以下の通り
- バッチがAPIを呼び出し、APIがDBに登録・取得しに行く形

Sleuthのイメージ
Spring Sleuthのイメージはこんな感じ

- TraceIDとSpanIDと呼ばれるものがある
- TraceIDは1回のバッチの実行単位で生成され、共通のIDが同一リクエスト内で保持される
- SpanIDは1回のAPIのリクエスト単位で生成される
実際に導入してみた
用意したもの
- MacBook Pro (13-inch)
- IntelliJ IDEA
- JAVA 1.8
- Spring (2系)
gradleに設定を追加
- 基本的にはgradleに設定を追加するだけで動く模様
build.gradle
buildscript {
dependencies {
classpath "io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE"
}
}
apply plugin: "io.spring.dependency-management"
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-sleuth:2.0.2.BUILD-SNAPSHOT'
}
}
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
}
repositories {
maven {
url 'https://repo.spring.io/libs-snapshot'
}
}
ハマったところ
- RestTemplateをBean登録していなかった
- SpringBoot1.5系を使っていたときに、最新バージョンのSleuthを入れていた
基本的にはハマる要素はないのですが、この2つだけ気をつければ簡単に導入できそう、、
まとめ(個人的な所感)
- とりあえずSleuthを入れることは簡単である
- ただ、Sleuthだけ入れても特に恩恵は得られない
- むしろ、無駄に吐き出されるログが長くなるので監視がしにくくなる一面もある
- zipkinの導入を検討する必要がありそう