このエントリは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) に送信する場合、以下の方法がある。
| 方法 | 備考 | |
|---|---|---|
| 1 | Java agentを使う | 簡単だが、起動時間に難があり、かつ現時点(2025/07/20)ではNative Image化できない |
| 2 | 依存関係 (io.micronaut.micrometer:micronaut-micrometer-registry-azure-monitorやio.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) に送信する上での注意点を個別のエントリにまとめた。