📚

Spring BootのアプリケーションでAzure Monitor Application Insightsを使用する

2023/05/07に公開

1. 今回の前提

  • アプリケーションはSpring Bootで作成
  • コンテナイメージを作成する
  • Azure App Serviceにカスタムコンテナイメージをデプロイする
    Azureリソースやコンテナのデプロイについては割愛

2. Application InsightsのAgentを入手

Application InsightsのAgentはGitHubで公開されているのでダウンロードする。特に理由がなければ最新版で良い。

3. Dockerfileを作成

追加するのは以下の2つ

  • Application Insights Agentのモジュールをコピーする
    • 今回ダウンロードしたモジュールはversion3.4.12
  • 起動引数にApplication Insights Agentの指定を追加する
    • -jarより前に記述する必要があるとのこと。
# ---- Build ----
FROM gradle:8.0.2-jdk17 as build-stage

RUN mkdir /project
COPY . /project
WORKDIR /project
# download application insights agent
RUN wget https://github.com/microsoft/ApplicationInsights-Java/releases/download/3.4.12/applicationinsights-agent-3.4.12.jar
RUN gradle clean build -x test


# ---- Release ----
FROM gcr.io/distroless/java17-debian11

USER nonroot:nonroot
COPY --from=build-stage /project/build/libs/<jar file name>.jar /app/<jar file name>.jar
COPY --from=build-stage /project/applicationinsights-agent-3.4.12.jar /app/applicationinsights-agent-3.4.12.jar

EXPOSE 8080

ENTRYPOINT ["java", "-javaagent:/app/applicationinsights-agent-3.4.12.jar","-jar", "/app/<jar file name>.jar"]

4. App ServiceのApplication Setting

  • APPLICATIONINSIGHTS_CONNECTION_STRING: Application Insightsの接続文字列

参考にしたドキュメント

https://learn.microsoft.com/ja-jp/azure/azure-monitor/app/opentelemetry-enable?tabs=java#install-the-client-libraries
https://learn.microsoft.com/ja-jp/azure/azure-monitor/app/java-spring-boot#spring-boot-via-docker-entry-point

Discussion