我们使用nodejs作为后端应用程序,并在前端进行原生反应。以及用于日志记录的azure应用程序见解。在UI端,我们重定向到Stripe结账页面(外部页面(进行付款,然后返回到我们的应用程序的确认页面。在这里,我们正在失去端到端事务的流量。我的要求是将条带前和条带后操作链接到一个流中。为此,我解决这个问题的方法是访问OPERATIONID并将其传递给stripe,然后从stripe接收回来,并在确认页面中使用它,这样我们就可以实现一个流。我需要帮助指导我找到正确的文档/解决方案建议。
我读了一些文章(例如:如何在javascript中获得Application Insights操作id?(,发现操作id是一个uniqueID,它是从我的应用程序中创建的,不能在应用程序中访问它。我试着使用下面的代码,得到了operationID的响应为";ai.operation.id";但这似乎不是operationId的正确模式(值(。
import { defaultClient } from 'applicationinsights';
const telemetryClient = defaultClient;
// tslint:disable-next-line:no-console
console.log(telemetryClient.context.keys[`operationId`]);
setDistributedTracingMode
设置为appInsights.DistributedTracingModes.AI_AND_W3C
,如下所示。
const appInsights = require("applicationinsights");
appInsights
.setup("<your ikey>")
.setDistributedTracingMode(appInsights.DistributedTracingModes.AI_AND_W3C)
.start()
您应该能够使用以下代码片段获取操作id。
const AppInsights = require("applicationinsights");
var context = AppInsights.getCorrelationContext();
var oid = context.operation.id;
如果它不能解决您的问题,我建议您自己将telemetry.context.operation.id
设置为唯一id,并确认Application Insights是否正确跟踪了这一点。
另请注意,Application Insights的最新版本的JavaScript SDK(SDK v2(对此文档进行了一些更改。
将
context.operation
移动到context.telemetryTrace
。一些字段也发生了变化(operation.id
->telemetryTrace.traceID
(。要保持跟踪ID的唯一性(以前使用Util.newId()
的位置(,现在使用Util.generateW3CId()
。两者最终都是操作ID。
有关详细信息,请阅读此日志自定义遥测文档。