X-RayをSpring Bootアプリケーションに組み込んでみた

X-RayをSpring Bootアプリケーションに組み込んでみた

スポンサーリンク

Webアプリケーションのレスポンスが時々遅くなっていることが、ロードバランサーのレスポンスタイムを見ていて気がついた。それ以上のことはわからないので、アプリケーションのレントゲン写真を撮ってみることにした。

Javaアプリケーションへの組み込み方のドキュメントはあるが…

X-Rayがどういうものかは、下記の資料を参照ということで。

AWS Black Belt Online Seminar 2017 AWS X-Ray

Javaアプリケーションへの組み込み方も、Spring Frameworkとそれ以外について、ドキュメントが用意されている。

X-Ray SDK for Java を使用してフィルタをアプリケーションに追加し、受信リクエストをトレースします。

が、わかったような、わからないような…。

Spring Bootアプリケーションに組み込んでみた

悩んでいても進まないので、まずはやってみる。ターゲットはSpring Boot 2.0で作ったWeb Application。httpのリクエストを受け取って、DB(MySQL)にデータを書き込むという、よくあるパターンの要素を取り出したようなシンプルなもの。
Mavenを使っているので、pom.xml にX-Ray用の設定を追加する。

実際に必要とするライブラリは

残念ながら、これらをpom.xmlに書き加えるだけでは不十分。サーブレットフィルタにX-Rayのライブラリをセットすることで、httpのリクエストをトレースできるようになる。これはドキュメントにある通り、@Configuration を付けたクラスを追加して実現する。

X-Ray SDK for Java を使用してフィルタをアプリケーションに追加し、受信リクエストをトレースします。

一方、JDBCの呼び出しは設定だけでトレースできる。

spring.datasource.jdbc-interceptors=com.amazonaws.xray.sql.mysql.TracingInterceptor

の一文をapplication.propertiesファイルに追加すればよい。

サービスマップとトレースが出た

これだけの設定を行ってから、コンパイル、デプロイして動かしてみたところ、X-Rayの説明でよく見かけるサービスマップやトレースがみられるようになった(X-Rayデーモンの設定は必要だが、ここでは省略)。
ただ、http requestの中でSQLを処理している部分(時間)が出てくるだけなので、もう少し細かいトレースが欲しくなる。さすがにこれは、プログラムに手を入れてサブセグメントを作るようにしないと無理そうだ。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

フォローする

この記事へのコメント

Loading Facebook Comments ...

No Trackbacks.