node.js - 在 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`]);
解决方案
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。
有关更多信息,请阅读此日志自定义遥测文档。
推荐阅读
- r - 从原始数据创建数据组并绘制它?
- javascript - 使用 JS 从任何元素中获取所有样式
- python - 使用 Pytorch 处理非 NLP 任务的多任务 LSTM
- nginx - NGINX 通过 HTTPS 反向代理到 Nuxt 应用程序
- python - 如何在 keras 中获取输入并行层
- swiftui - 如何充分利用小部件内存限制和每天的刷新次数
- ios - 如何消除这些与使用 SwiftUI 相关的常见 Firebase 警告?
- ios - SharePoint button.mobile-nav-toggle 按钮在 iPhone 上不可见
- r - 如何在我的描述性统计中显示因子名称而不是 R 中的数字
- flutter - 如何在一定延迟后实现计时器来执行代码?