首页 > 解决方案 > 在 nodejs 应用程序中访问 operationId 需要帮助和指导

问题描述

我们使用 nodejs 作为我的后端应用程序,并在前端做出原生反应。以及用于日志记录的 Azure 应用程序洞察。在 UI 方面,我们重定向到 Stripe 结帐页面(外部页面)进行付款,然后返回到我们应用程序的确认页面。在这里,我们失去了端到端交易的流程。我的要求是将条带前和条带后操作链接到一个流程中。为此,我解决此问题的方法是访问 OPERATIONID 并将其传递给条带并从条带接收它并在确认页面中使用它,以便我们将一个单一的流程。我需要帮助来指导我找到正确的文档/解决方案建议。

我阅读了一些文章(例如:如何在 javascript 中获取 Application Insights 操作 ID?)并发现 operationId 是一个 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`]);

标签: node.jsreact-nativeazure-application-insights

解决方案


operationId 的主要功能是帮助跟踪分布式系统,以便您可以关联请求。因此,如nodejs 客户端的本文档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。

有关更多信息,请阅读此日志自定义遥测文档。


推荐阅读