繁体   English   中英

每个 api 请求的不同 trace-id

[英]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 有关详细信息,请参阅以下内容

事务诊断常见问题解答 (Azure Monitor)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM