MicronautアプリケーションからAzure Monitorにlog/metric/traceを送信したい

このエントリは2025/07/20現在の情報に基づいています。将来の機能追加や変更に伴い、記載事項からの乖離が発生する可能性があります。

問い合わせ

Micronautをお使いの主から以下のような問い合わせが届いた。

現在Micronautでマイクロサービスを作成し、Azure上 (Azure Container Apps) でオーケストレーションしている。以下の2点について伺いたい。

  • Micronautのドキュメントやガイドを見ると、Azure Monitorにlogやmetricを送信する方法の記載は見つけることができたが、traceはどうすればよいか?
  • GraalVM Native Imageでも利用可能か?

確かに、Spring BootであればSpring Boot Starter、QuarkusであればQuarkusが依存関係を提供しているが、果たしてMicronautではどうなのか、ということのよう。

Spring Boot Starter
https://opentelemetry.io/docs/zero-code/java/spring-boot-starter/
Quarkus Opentelemetry Exporter for Microsoft Azure
https://docs.quarkiverse.io/quarkus-opentelemetry-exporter/dev/quarkus-opentelemetry-exporter-azure.html
Monitor your Spring Boot native image application on Azure
https://devblogs.microsoft.com/java/monitor-your-spring-boot-native-image-application-on-azure/
Monitor your Quarkus native application on Azure
https://devblogs.microsoft.com/java/monitor-your-quarkus-native-application-on-azure/

どの手法が使えるのか

Trace、Metic、LogをMicronautからAzure Monitor (Application InsightsやLog Analytics Workspace) に送信する場合、以下の方法がある。

方法備考
1Java agentを使う簡単だが、起動時間に難があり、かつ現時点(2025/07/20)ではNative Image化できない
2依存関係 (io.micronaut.micrometer:micronaut-micrometer-registry-azure-monitorio.micronaut.azure:micronaut-azure-logging) をバインドしてfat JARにするこれまでtraceに関わる依存関係がなかった
3(Container Apps固有)Azure Monitor AgentをAzure Container Environmentで有効化し、OpenTelemetry protocol (OTLP) で送信するアプリケーションの種類は問わないため簡単ではあるが、metricの送信ができない、という制限がある[1]

[1]に関わるドキュメントと、設定例のブログエントリはこちら。

Azure Container Apps で OpenTelemetry データを収集して読み取る / Collect and read OpenTelemetry data in Azure Container Apps
https://learn.microsoft.com/azure/container-apps/opentelemetry-agents
Observe Quarkus Apps with Azure Application Insights using OpenTelemetry
https://techcommunity.microsoft.com/blog/AppsonAzureBlog/observe-quarkus-apps-with-azure-application-insights-using-opentelemetry/4391774

状況が変わった

しかしながら、2.については状況が変わった。Micronaut 4.9.0でazure-tracing (io.micronaut.azure:micronaut-azure-tracing) という、名前の通りApplication Insightsへtraceを送信するための依存関係が追加された。micronaut-azure-tracingは、Azure Monitor agentではなく、Azure Monitor OpenTelemetry SDK Autoconfigure Distro を使うことで実現しているので、Native Imageにも対応している。そのため、traceのためだけにNative Image化を諦める必要はなくなった。

Azure Monitor OpenTelemetry SDK Autoconfigure Distro for Application Insights
https://learn.microsoft.com/java/api/overview/azure/monitor-opentelemetry-autoconfigure-readme?view=azure-java-stable

そこで、Metric、Trace、LogをMicronautアプリケーションからAzure Monitor (Application Insights、Log Analytics Workspace) に送信する上での注意点を個別のエントリにまとめた。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください