Rol*_*ger 9 java javaagents spring-boot azure-application-insights graalvm-native-image
与 SpringBoot (3.0.3) 应用程序一起,我们使用 Application Insights (Azure) 进行监控。
目前我们正在尝试使用 GraalVM 本地编译应用程序。这工作得很好,给我们带来了很多好处(启动时间和内存消耗)。唯一还不能工作的是作为 Java 代理启动的 Application Insights。我几乎没有找到关于整个主题的有用信息,并问自己我们是否正在尝试做一些目前根本不支持的事情。
这是我们迄今为止所做的尝试:
nativeCompile
Gradle 任务的参数指定额外的 jvmArgs(如此处所述: https: //github.com/oracle/graal/issues/1065)。尽管构建工作正常,但它只是不包含(或启动?)应用程序启动时的代理。
是否有解决方案可以在本机编译版本中添加 javaagents,或者是否有任何替代方案可以将监控数据从 SpringBoot 应用程序发送到 ApplicationInsights?
我在 GraalVM 文档中找不到有关将运行时代理附加到本机应用程序的本机映像的任何内容。这表明它不受支持。
然后,我搜索“application Insights graalvm native image”并在 Application Insights 问题跟踪器上找到了这个:
https://github.com/microsoft/ApplicationInsights-Java/issues/1266
我们当前正在使用 OpenTracing SPI 的自定义实现,将跟踪数据从 Quarkus 应用程序发送到 Application Insights(该实现基于 Application Insights SDK 2.6.1)。我们的计划是在 Quarkus 支持后立即转向 OpenTelemetry。
由于 Quarkus 还支持本机图像生成(使用 GraalVM),因此无法使用 Java 代理进行自动检测,并且需要与 Quarkus 进行“深度集成”。我想知道像这样的用例是否受到关注,以及是否会提供适合该用例的构建(即 Maven 工件)。我想会有一个只提供出口商的构建。
突出显示的短语与我从(缺乏)文档中推断出的内容一致。对这个 GraalVM 问题的回应进一步证实了这一点:https ://github.com/oracle/graal/issues/5912
你说:
使用 OpenTelemetry 库 [...]。对我来说,它似乎仍然使用一种 javaagent jar 才能正常工作。
另一种方法是将 OpenTelemetry JAR 包含在 SpringBoot 应用程序中,并以编程方式启用它,而不是通过 javaagent。GraalVM 本机映像生成器会将其转换为本机代码。
归档时间: |
|
查看次数: |
1417 次 |
最近记录: |