- Java 11
- Spring Boot
- logger (Sproing boot のデフォルトである SLF4J + Logback を利用)
- Maven
- Application Insights Agent (エージェントの Jar ファイルを実行時にアタッチ)
WSL 上の Ubuntu で開発する場合
-
Spring Initializrでアプリのスケルトンを作成
https://start.spring.io/- 出力は Jar
- Dependency に Spring Web と lombok を追加する。
-
WSL に接続した VSCode でプロジェクトを開く
-
Controller 実装を追加 (実装内容はサンプルコードを参照)
以下のコマンドで、http://localhost:8080/ でローカルでサーバが立ち上がる。
mvn clean spring-boot:run もしくは、Jarを生成して直接Javaから実行する。
mvn clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar※ mvnのspring-bootプラグインが対応しているコマンドを確認する場合は、mvn spring-boot:help を実行する。
-
VSCodeに拡張機能を入れる
- Java Extension Pack
- Azure、Maven for Java
- Spring Boot Extension pack
-
VSCodeのメニューの [Run] - [Start Debugging] を実行
-
サーバーが起動され、アプリケーションへアクセスできる状態になる
export APPLICATIONINSIGHTS_CONNECTION_STRING="InstrumentationKey=249345....."エージェントの applicationinsights-agent-3.X.X.jar ファイルと同じディレクトリに applicationinsights.json を作成し、以下のように設定する
{
"connectionString": "InstrumentationKey=249345....."
}applicationinsights.json の記載方法の詳細は、以下を参照 https://learn.microsoft.com/ja-jp/azure/azure-monitor/app/java-standalone-config
アプリを App Service にデプロイしている場合は、App Service 環境にあらかじめ組み込まれた Application Insights を利用できる。 この場合はコード変更は不要。App Service で Application Insights を有効化すると、App Service のランタイム側で Application Insights が自動的にアタッチされる。 ただし、ローカルでアプリ開発する段階では自動インストルメンテーションは使えないので、後述の JAR を VM にアタッチする方式を使う。
※ この実装は、master ブランチに入っています。
事前に Application Insights のエージェントをダウンロードして、任意のパスに置いておく。
# エージェントのダウンロード
wget https://github.com/microsoft/ApplicationInsights-Java/releases/download/3.4.19/applicationinsights-agent-3.4.19.jar起動時は以下のコマンドを実行し、Application Insights のエージェントをアタッチする。
# アプリの実行
java -javaagent:/dev/java/app01/applicationinsights-agent-3.4.19.jar -jar target/demo-0.0.1-SNAPSHOT.jar-javaagent で指定する /dev/java/app01/ の部分は、各自の環境に合わせて置き換える。絶対パスでなく、java コマンド実行時のパスからの相対パスも利用できる。
※ この実装は、v3sdk ブランチに入っています。
pom.xml に Spring Boot 用の Application Insights を入れる方法。 以下の方法で有効化する。 https://learn.microsoft.com/ja-jp/azure/azure-monitor/app/java-spring-boot#enabling-programmatically
applicationinsights-runtime-attachを pom.xml に追加する。<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-runtime-attach</artifactId> <version>3.4.3</version> </dependency>
- main メソッドの最初に
ApplicationInsights.attach();を追加する。@SpringBootApplication public class SpringBootApp { public static void main(String[] args) { ApplicationInsights.attach(); SpringApplication.run(SpringBootApp.class, args); } }
このアプリを App Service にデプロイする場合は、App Service のポータルで設定する自動インストルメンテーションは無効化しておく。
以下のページを参照し、VSCode の拡張機能を用いてデプロイする https://docs.microsoft.com/ja-jp/learn/modules/create-publish-webapp-app-service-vs-code/4-publish-app-azure-app-service-vs-code
Github Action を用いることで、Github のリポジトリにコードが Push されたら、自動的に App Service にデプロイできる。 App Service のデプロイ センターで、連携する Github リポジトリの情報を入力し、リポジトリにコードをPushすると、自動的に App Service にデプロイされる。