はじめに
以前、ローカルマシン上で動かしているJavaアプリのメトリックス情報をApplication Insightsに送るということをしました。
そこから放置していたのですが、ふとしたきっかけでAzure Web Apps上で動かしているJavaアプリのメトリックスの取得について調べる機会があったので、再度調査してみました。
2021年11月現在はポータルで作成時にApplication Insightsとの関連付けができる
以下の更新情報の通り、今はポータルで作成時にApplication Insightsとの関連付けができるようです。
実際にポータルで作成しようとすると以下の画面が出てきます。
作成した後、アプリケーション設定を見てみるとApplication Insightsの情報が設定されていました。
アプリをデプロイする
ソースコードはGitHubにデプロイしているので、GitHub Actionsを使ってデプロイしてみます。参考となる記事は以下のもの。
ちょっとハマったところ
Spring Boot 2.5.6アプリでgradlew build
コマンドを実行すると、build/libs
以下にJarファイルが二つ作成されます。このため、GitHub ActionsのAzure/webapps-deploy@v2
の処理でDeployment Failed with Error: Error: More than one package matched with specified pattern: build/libs/*.jar. Please restrain the search pattern.
と出てデプロイできません。
Jarファイルが二つ作成される挙動はSpring Boot 2.5からのようで、plainなJarを作成しない方法は
jar { enabled = false }
を設定すれば良いようです。
Spring Boot Actuatorの利用
Spring Boot Actuatorを利用しているとそのデータも収集対象としてくれるようなので、build.gradle
にimplementation 'org.springframework.boot:spring-boot-starter-actuator'
も追記しておきます。application.propertiesには特に設定しなくても良さそうです。
確認する
アプリを動かしてApplication Insightsを見てみると色々とメトリックスが取れているようです。
それぞれのパラメータの意味については今後の調査項目ということで(探したんですが、ソースを読むぐらいしか手はない感じ?)。
ソースを読むならmicrometerのソースなのかなと思いました。以下はJVM MemoryのMetricsを実装している部分。
ソース
本記事を書いた時のソースです。