Ros*_*gan 5 azure-application-insights azure-functions
我有一个以以下方式分布在多个功能中的过程:
Http绑定功能将消息保存在队列中队列绑定功能处理该消息,然后将另一个消息放入队列中。最后,另一个函数处理该消息并将某些内容保存在数据库中。
我想要的是使应用程序见解可以理解原始请求的上下文,并能够在所有分布式函数调用中跟踪请求的流程,但是我似乎没有办法设置操作ID正确(我认为这最终是实现我的要求的“正确”方法)。
我可以设置父ID,但这只会阻止收集的数据完全显示在应用程序见解中。我使用以下代码设置父ID:
private static void UpdateTelemetryContext(TelemetryContext context, ExecutionContext functionContext, string id)
{
context.Operation.Id = functionContext.InvocationId.ToString();
context.Operation.ParentId = id;
context.Operation.Name = functionContext.FunctionName;
}
Run Code Online (Sandbox Code Playgroud)
我可以实现目标的唯一方法是将用户ID设置为所需的上下文ID(将所有操作链接在一起的东西),并将合成源设置为“功能”,因此至少我知道它不是真正的用户。
这是我用来实现此目的的代码:
private static void UpdateTelemetryContext(TelemetryContext context, ExecutionContext functionContext, string id)
{
context.Operation.Id = functionContext.InvocationId.ToString();
context.Operation.ParentId = functionContext.InvocationId.ToString();
context.Operation.Name = functionContext.FunctionName;
context.User.Id = id;
context.Operation.SyntheticSource = "Functions";
}
Run Code Online (Sandbox Code Playgroud)
现在,在应用程序洞察力内部,我可以单击“显示用户的时间轴”并一起查看功能组的所有执行,但这感觉很错误,因此必须有一种更好的方法来实现。
对于任何寻求此问题答案的人来说,唯一的方法是禁用应用程序洞察中的自动日志记录,而全部手动完成。
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |