如何在javascript中获取应用程序操作id?

如何在javascript中获取应用程序操作id?,javascript,node.js,azure,azure-functions,azure-application-insights,Javascript,Node.js,Azure,Azure Functions,Azure Application Insights,我有一个用javascript编写的Azure Function应用程序,它集成了应用程序洞察: const AppInsights = require("applicationinsights"); AppInsights.setup(appInsightsInstrumentationKey); AppInsights.defaultClient.context.tags[ AppInsights.defaultClient.context.keys.cloudRole

我有一个用javascript编写的Azure Function应用程序,它集成了应用程序洞察:

const AppInsights = require("applicationinsights");

AppInsights.setup(appInsightsInstrumentationKey);
AppInsights.defaultClient.context.tags[
    AppInsights.defaultClient.context.keys.cloudRole
        ] = "My back-end";
AppInsights.start();
模块版本为1.7.4

我确实需要访问当前操作id才能将其发送到我的自定义日志,以便与Azure中的AI日志进行关联。在我的功能中,我尝试了以下方法:

var telemetry = appInsights.defaultClient;
var oid = telemetry.context.tags["ai.operation.id"]; // does not work
var oid = telemetry.context.operation.id; // does not work
尽管如此,AI还是以某种方式收集它,以便我可以在Azure门户中看到它:


如何在运行时访问Azure函数中的
操作id
值?

阅读nodejs客户端中的文档,我认为您必须将
设置DistributedTracingMode
设置为
appInsights.DistributedTracingModes.AI

这就是operationId所做的,它帮助跟踪分布式系统,以便您可以关联请求

从:

让appInsights=require(“applicationinsights”);
appInsights.setup(“”)
.setDistributedTracingMode(appInsights.DistributedTracingModes.AI)
.start();

operationId是Application Insights SDK在每个请求上自动添加的值,但显然是在稍后的阶段,当您尝试访问它时还为时过早。这就是黑盒解决方案的问题。但是你可以试着把它放在第一位。自己将telemetry.context.operation.id设置为唯一id,并确认ApplicationInsights是否正确跟踪了该id

您可以尝试使用以下代码行:

//operation id
var s = client.context.keys["operationId"];
我是通过调试找到的,截图如下:


不确定Azure功能,但在node js应用程序中,我可以使用:

const AppInsights = require("applicationinsights");
var context = AppInsights.getCorrelationContext();
var oid = context.operation.id;

保证在模块版本1.8.0中工作,根据您的需要,您可以通过调用
context.executionContext.invocationId
访问或编辑操作id。我已显式启用它,但它不工作。我更感兴趣的是关于如何访问operationid值的代码。@UserControl operationid是一个值,由Application Insights SDK自动添加到每个请求上,但显然是在稍后的阶段,当您尝试访问它时还为时过早。这就是黑盒解决方案的问题。试着自己设置!将telemetry.context.operation.id设置为您自己的唯一id,并确认ApplicationInsights是否正确跟踪了该id。@UserControl由于您使用的是azure function app,我认为这是操作的开始,因此它是自动生成操作\u id的位置。如果您有一个web应用程序,那么访问它就会更容易。但是试试上面的建议,它应该work@Stellios,我试过了,不幸的是它不起作用。@UserControl如果不起作用,我就没有主意了。祝你好运在这种情况下,
s
将包含“ai.operation.id”-查找操作id值的键,在我的情况下,
.context.tags[“ai.operation.id”]
未定义:(
const AppInsights = require("applicationinsights");
var context = AppInsights.getCorrelationContext();
var oid = context.operation.id;