[英]different trace-id for each api request
我的 Angular SPA 应用程序正在调用后端 api,而后者又可以调用多个 api。
要查看端到端跟踪,我们正在使用应用程序洞察 sdk "@microsoft/applicationinsights-web": "^2.5.4"
启用W3C跟踪模式。
问题是来自 SPA 的所有不同 api 调用都具有相同的trace-id 。 因此,在 azure application insight 端到端跟踪中,我在同一个浏览器父级下看到了太多请求跟踪。
我想要的是每个新 api 请求的不同跟踪 ID。
traceparent就像00-1e9d1a6e585e4d35afc5af825fadaa86-f50cda29ee924950-01
其中1e9d1a6e585e4d35afc5af825fadaa86
是跟踪 ID。
无论我如何更改设置,它都无法按预期工作。
this.appInsights = new ApplicationInsights({
config: {
instrumentationKey: settings.appInsightsConfig.instrumentationKey,
distributedTracingMode: DistributedTracingModes.W3C,
disableCorrelationHeaders: false,
enableDebug: false,
enableCorsCorrelation: true,
enableRequestHeaderTracking: true,
enableAutoRouteTracking: true,
autoTrackPageVisitTime: true,
enableAjaxErrorStatusText: true
}
});
设置distributedTracingMode: DistributedTracingModes.W3C
将启用基于 W3C TraceContext 的分布式跟踪。 在当前情况下,似乎 traceID 没有为更新的操作刷新,导致每个操作都显示在单个事务中。
您可以通过调用appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId()
手动刷新操作 ID。
手动触发 PageView 事件也会重置 Operation ID,但使用 SPA,只会生成一个页面查看事件。 因此,我建议在适当的代码中使用generateW3CId()
方法设置traceID
。 有关详细信息,请参阅以下内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.