Webアプリケーションのレスポンスが時々遅くなっていることが、ロードバランサーのレスポンスタイムを見ていて気がついた。それ以上のことはわからないので、アプリケーションのレントゲン写真を撮ってみることにした。
Javaアプリケーションへの組み込み方のドキュメントはあるが…
X-Rayがどういうものかは、下記の資料を参照ということで。

Javaアプリケーションへの組み込み方も、Spring Frameworkとそれ以外について、ドキュメントが用意されている。
が、わかったような、わからないような…。
Spring Bootアプリケーションに組み込んでみた
悩んでいても進まないので、まずはやってみる。ターゲットはSpring Boot 2.0で作ったWeb Application。httpのリクエストを受け取って、DB(MySQL)にデータを書き込むという、よくあるパターンの要素を取り出したようなシンプルなもの。
Mavenを使っているので、pom.xml にX-Ray用の設定を追加する。
実際に必要とするライブラリは
残念ながら、これらをpom.xmlに書き加えるだけでは不十分。サーブレットフィルタにX-Rayのライブラリをセットすることで、httpのリクエストをトレースできるようになる。これはドキュメントにある通り、@Configuration を付けたクラスを追加して実現する。
一方、JDBCの呼び出しは設定だけでトレースできる。
spring.datasource.jdbc-interceptors=com.amazonaws.xray.sql.mysql.TracingInterceptor
の一文をapplication.propertiesファイルに追加すればよい。
サービスマップとトレースが出た
これだけの設定を行ってから、コンパイル、デプロイして動かしてみたところ、X-Rayの説明でよく見かけるサービスマップやトレースがみられるようになった(X-Rayデーモンの設定は必要だが、ここでは省略)。
ただ、http requestの中でSQLを処理している部分(時間)が出てくるだけなので、もう少し細かいトレースが欲しくなる。さすがにこれは、プログラムに手を入れてサブセグメントを作るようにしないと無理そうだ。
コメント