Azure App-Insights 与链式 API 管理调用和 Spring Boot + Apache HTTP 的相关性
Azure App-Insights correlation with chained API Management calls and Spring Boot + Apache HTTP
我有一个面向 API 的 public 调用后端 Web 应用程序,后者又调用另一个 API(在同一个 API 管理实例中作为第一个进行外部调用的 API)。
我的 Web 应用程序是一个 Spring 使用 Apache HTTP 客户端启动并且 SDK 是为 AI 配置的,我可以看到 AppInsights 到依赖项调用。但此时,对下一个 APIMgmt API 的调用创建了一个不相关的新请求,并显示为单独的操作(但具有正确的 BACKEND 事件)。
我已经尝试 passing "Request-Id" and "Correlation-Context"(未修改)从我的 Apache 客户端到 API。 App Insights 显示但在错误的父目录下并且没有后端事件。
如何关联这一系列事件?
经过大量测试、调试和阅读。这是可行的,但您必须从调用代码中访问 RequestTelemetry 才能获得正确的 Request-Id header 值。
RequestTelemetryContext ctx = ThreadContext.getRequestTelemetryContext();
RequestTelemetry reqTel = ctx.getHttpRequestTelemetry();
String currentRequestId = reqTel.getId();
我有一个面向 API 的 public 调用后端 Web 应用程序,后者又调用另一个 API(在同一个 API 管理实例中作为第一个进行外部调用的 API)。
我的 Web 应用程序是一个 Spring 使用 Apache HTTP 客户端启动并且 SDK 是为 AI 配置的,我可以看到 AppInsights 到依赖项调用。但此时,对下一个 APIMgmt API 的调用创建了一个不相关的新请求,并显示为单独的操作(但具有正确的 BACKEND 事件)。
我已经尝试 passing "Request-Id" and "Correlation-Context"(未修改)从我的 Apache 客户端到 API。 App Insights 显示但在错误的父目录下并且没有后端事件。
如何关联这一系列事件?
经过大量测试、调试和阅读。这是可行的,但您必须从调用代码中访问 RequestTelemetry 才能获得正确的 Request-Id header 值。
RequestTelemetryContext ctx = ThreadContext.getRequestTelemetryContext();
RequestTelemetry reqTel = ctx.getHttpRequestTelemetry();
String currentRequestId = reqTel.getId();