1. やりたいこと
以前の投稿で、docker-composeを利用して、zipkinサービスを手元で動かすことができるようになったので、playframeworkを利用して、zipkinにレコードを登録できるかを試してみようと思いました。
lightbendのサイトを見ると、activatorのtemplateが提供されていたので動かしてみることにしました。
2. 実施手順
2-1. テンプレートをgit clone
git clone https://github.com/levkhomich/activator-play-tracing.git
2-2. conf/application.confのZipkinのhostを修正
cd activator-play-tracing
vim conf/application.conf
編集する箇所はhostのみとなります。
akka {
extensions = ["com.github.levkhomich.akka.tracing.TracingExtension"]
tracing {
sample-rate = 1
enabled = true
host = "ここを書き換える"
port = 9410
}
}
上記が、akka-tracingのTracingExtension.scalaで読み込まれているようです。
activatorのサンプルのソースでは、GlobalSettings
を使っているようです。。。
そして、akka-tracingのソースでもGlobalSettings
を使っているような。。。
2-3. activatorを起動
./activator
しばらく依存が解消されるのを待つと、コンソールに入ることが出来ました。
2-4. applicationを起動
run
起動すると、以下のような画面が立ち上がります。
2-5. ZipkinのWEB UIを確認してみる
プルダウンにapplication
というtagが追加されていることがわかります。
テンプレートから始めれば簡単に利用できる印象です。
ただ、0から自分でつくったプロジェクトで、チュートリアルの設定をするだけだと、下記のようなメッセージが出て利用不可のように見えます。
[error] - com.github.levkhomich.akka.tracing.SpanHolder - Thrift transport error: Cannot write to null outputStream
[error] - com.github.levkhomich.akka.tracing.SpanHolder - Zipkin collector is unavailable. Failed to send 0 spans during postStop.
[info] - play.api.Play - Application started (Dev)
接続不良が起きてるような。。
3. activator-play-tracingの処理の流れの推測
playのアプリケーションが立ち上がる前に、以下の動きをしていると思います。
(間違っていましたらどなたかご指摘ください(><))
- GlobalSettingsの仕組みで、Global.scalaにある、
TracingSettings
がよばれる。 -
TracingSettings
の中で、conf/application.conf
にある設定を読み込んで、Thriftによる通信コネクションをopen - tracerをplay.libs.Akkaのシステムを利用して登録
アプリケーションが開始されると、Controllerであれば、extendsされたPlayControllerTracing
経由でトレースが実施される。(ここもデバッグしながら確認しようと思います)
4. 所感
-
GlobalSettings
って非推奨になるんじゃ。。http://d.hatena.ne.jp/xuwei/20160305/1457174406 - akka-tracingがなんだかわかりにくい。。もうちょっと読んでみよう。
- akka-tracingが内部で、GlobalSettingsのライブラリ読んでるけどこれはありなのかな。module化できないのかな。
本日は以上となります。