首页 文章

应用程序见解和Azure功能 - 跟踪分布式操作

提问于
浏览
4

我有一个以下列方式分布在多个函数中的进程:

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;
    }

我可以实现我想要的唯一方法是将用户id设置为我想要的上下文ID(将所有操作链接在一起的东西),并将合成源设置为“Functions”,所以至少我知道它不是真正的用户 .

这是我用来实现这个目的的代码:

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";
    }

现在,在内部应用程序见解中,我可以单击“显示用户的时间线”并查看功能组的所有执行,但这感觉非常错误,只需要有更好的方法来实现这一点 .

1 回答

相关问题