不幸的是,我无法使用 Application Insight 正确跟踪我的应用程序。
我的 Spring Boot 项目通过 spring-cloud-function-adapter-azure 库公开了一系列 @HttpTriggers 和 @ServiceBusTriggers,下面我将向您展示其中两个触发器的示例(但是应用程序洞察相关性的问题存在于所有触发器上)其中):HelloWorldProducerTrigger 和 FooProducerTrigger。
首先,我在项目的依赖项和 maven-dependency-plugin 配置中导入了 applicationinsights-agent 库,定义如下:
https://github.com/Azure-Samples/ApplicationInsights-Java-Samples/blob/main/maven/pom.xml
随后在配置部分的函数属性中插入了 APPLICATIONINSIGHTS_CONNECTION_STRING 属性。
部署该函数后,我尝试调用我的 HelloWorldProducerTrigger api (/api/v2/hello-world),它又通过 POST 调用 FooProducerTrigger api (api/v2/foo),但在我的应用程序洞察的端到端仪表板中请求彼此不相关:
分析我的请求的标头,我注意到 Azure 将 W3C TraceContext“traceparent”属性注入到标准中定义的每个请求的标头中https://learn.microsoft.com/en-us/azure/azure-monitor /app/distributed-trace-data,但是我们可以在下面看到HelloWorldProducerTrigger的traceparent:
“traceparent”:“00-6d2fe7dfd8e3458b4baf94eb9825cd3d-cdd14db2bf0f112f-00” 操作 ID:6d2fe7dfd8e3458b4baf94eb9825cd3d 父 ID:cdd14db2bf0f112f
和 FooProducerTrigger 有不同的操作Id(所以我认为相关问题就是这样)
“追踪父”:“00-5104fa229a07a7b3eeda5129ca1b7c66-4e4cb97be05bb545-00” 操作 ID:5104fa229a07a7b3eeda5129ca1b7c66 父 ID:4e4cb97be05bb545
我应该怎样做才能正确地自我检测我的 Spring Boot 项目?
根据以下指南,我预计一旦导入 applicationinsights-agent 库,我的应用程序将进行自我检测,因此我将在 App Insight 上看到正确的相关调用。
https://learn.microsoft.com/it-it/azure/azure-monitor/app/opentelemetry-enable?tabs=java
谢谢!
谢谢@paizo,我同意他的观点,并且根据我遵循的 MS 文档,您可以在下面查看。
我应该怎样做才能正确地自我检测我的 Spring Boot 项目?
您需要检查
traceparent
标头是否在应用程序组件中正确且一致地传播。在您的情况下,您看到不同请求的不同 OperationId
值意味着相关性可能未正确设置。
根据以下指南,我预计一旦导入 applicationinsights-agent 库,我的应用程序将进行自我检测,因此我将在 App Insight 上看到正确的相关调用。
是的,即使在我的情况下,我在我的环境中创建了相同的场景,也是如此,并且它也有效。
applicationinsights-agent
依赖项添加到您的 pom.xml
文件中。Microsoft Application Insights Java 代理:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>3.4.19</version>
</dependency>
HttpTrigger:
服务总线队列触发器:
参考: