Azure Web AppsにてJavaアプリケーションの各種メトリックス情報をApplication Insightsに送る

はじめに

以前、ローカルマシン上で動かしているJavaアプリのメトリックス情報をApplication Insightsに送るということをしました。

miyohide.hatenablog.com

そこから放置していたのですが、ふとしたきっかけでAzure Web Apps上で動かしているJavaアプリのメトリックスの取得について調べる機会があったので、再度調査してみました。

2021年11月現在はポータルで作成時にApplication Insightsとの関連付けができる

以下の更新情報の通り、今はポータルで作成時にApplication Insightsとの関連付けができるようです。

azure.microsoft.com

実際にポータルで作成しようとすると以下の画面が出てきます。

f:id:miyohide:20211106205500p:plain

作成した後、アプリケーション設定を見てみるとApplication Insightsの情報が設定されていました。

f:id:miyohide:20211106205711p:plain

アプリをデプロイする

ソースコードGitHubにデプロイしているので、GitHub Actionsを使ってデプロイしてみます。参考となる記事は以下のもの。

docs.microsoft.com

ちょっとハマったところ

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.と出てデプロイできません。

f:id:miyohide:20211106211048p:plain

Jarファイルが二つ作成される挙動はSpring Boot 2.5からのようで、plainなJarを作成しない方法は

jar {
    enabled = false
}

を設定すれば良いようです。

docs.spring.io

Spring Boot Actuatorの利用

Spring Boot Actuatorを利用しているとそのデータも収集対象としてくれるようなので、build.gradleimplementation 'org.springframework.boot:spring-boot-starter-actuator'も追記しておきます。application.propertiesには特に設定しなくても良さそうです。

docs.microsoft.com

確認する

アプリを動かしてApplication Insightsを見てみると色々とメトリックスが取れているようです。

f:id:miyohide:20211106212340p:plain

f:id:miyohide:20211106212356p:plain

それぞれのパラメータの意味については今後の調査項目ということで(探したんですが、ソースを読むぐらいしか手はない感じ?)。

ソースを読むならmicrometerのソースなのかなと思いました。以下はJVM MemoryのMetricsを実装している部分。

github.com

ソース

本記事を書いた時のソースです。

github.com