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

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

レントゲンソフトウェア
記事内に広告が含まれています。
スポンサーリンク

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

スポンサーリンク
スポンサーリンク

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

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

AWS Black Belt Online Seminar 2017 AWS X-Ray
【AWS Black Belt Online Seminar】 AWS X-Ray アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 畑 史彦 2017年8⽉2⽇ (※2017年8⽉9⽇更新) 内容についての注意点 • 本資料では2017年8⽉2⽇時点のサービス内容および価格についてご説明し.....

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

X-Ray SDK for Java を使用して受信リクエストをトレースします。 - AWS X-Ray
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 を使用して受信リクエストをトレースします。 - AWS X-Ray
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を処理している部分(時間)が出てくるだけなので、もう少し細かいトレースが欲しくなる。さすがにこれは、プログラムに手を入れてサブセグメントを作るようにしないと無理そうだ。

コメント

タイトルとURLをコピーしました