gpt4 book ai didi

azure-functions - Application Insights 和 Azure Functions - 跟踪分布式操作

转载 作者:行者123 更新时间:2023-12-04 21:03:18 25 4
gpt4 key购买 nike

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

Http绑定(bind)函数将消息保存在队列中
队列绑定(bind)函数处理消息,然后将另一条消息放入队列
最后,另一个函数处理消息并将某些内容保存在数据库中。

我想要的是应用程序洞察力以了解原始请求的上下文并能够在所有分布式函数调用中跟踪请求流,但我似乎没有办法设置操作 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(将所有操作链接在一起的东西),并将合成源设置为“功能”所以至少我知道它不是真正的用户。

这是我用来实现此目的的代码:
    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";
}

现在在应用程序洞察力中,我可以单击“为用户显示时间线”并一起查看功能组的所有执行,但这感觉太不对了,必须有更好的方法来实现这一点。

最佳答案

对于任何正在寻找答案的人来说,唯一的方法是禁用应用程序洞察中的自动日志记录,而是手动完成。

这篇博文对我帮助很大:https://azure-development.com/2017/12/15/end2end-monitoring-of-azure-functions-with-application-insights/

关于azure-functions - Application Insights 和 Azure Functions - 跟踪分布式操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53438078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com