【Application Insights】Application Insights存储的Function App的日志存在"Operation Link" 为空的情况

简介: 在将 Azure Functions 升级到 .NET 8 和 Isolated Worker 模式后,Application Insights 的请求日志中 `operation_Link` 字段为空,导致分布式追踪无法正常关联。解决方法包括:确保引用正确的 SDK 包(如 `Microsoft.Azure.Functions.Worker.ApplicationInsights`),正确配置 Application Insights 服务,移除默认日志过滤规则,并使用最新依赖包以支持分布式追踪。通过这些步骤,可恢复端到端事务视图的可视化效果。

问题描述

将 Azure Functions 升级到 .NET 8 和 Isolated Worker 模式后,发现 Application Insights 中的请求(Request)日志的 operation_Link 字段为空,显示如下内容:

"operation_links": [

 {

   "operation_Id": "00000000000000000000000000000000",

   "id": "0000000000000000"

 }

]

 

这导致在 Application Insights 的端到端事务视图中,多个请求无法正确关联,影响了分布式追踪的可视化效果。


问题解答

该问题的根本原因在于 Azure Functions 使用 Isolated Worker 模式时,Application Insights 的默认配置未能正确设置分布式追踪上下文,尤其是在处理 Service Bus 等触发器时。


为了解决这个问题,需要确保以下几点:

一:使用正确的 Application Insights SDK 包

确保项目中引用了 Microsoft.Azure.Functions.Worker.ApplicationInsights 包(例如版本 1.4.0)以及 Microsoft.ApplicationInsights.WorkerService


二:配置 Application Insights 服务

Program.cs 中,使用如下方式配置服务:

builder.Services.AddApplicationInsightsTelemetryWorkerService();

builder.Services.ConfigureFunctionsApplicationInsights();


三:移除默认的日志过滤规则

Application Insights SDK 默认只记录 Warning 及以上级别的日志。需要手动移除该规则以启用更详细的日志记录:

builder.Services.Configure<LoggerFilterOptions>(options =>

{

   var ruleToRemove = options.Rules.FirstOrDefault(rule =>

       rule.ProviderName == "Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider");

 

   if (ruleToRemove != null)

   {

       options.Rules.Remove(ruleToRemove);

   }

});

 

四:确保使用最新版本的相关依赖包

包括 Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 等,以获得更好的分布式追踪支持。

 

 

参考资料

Azure Functions & Application Insights requests "Operation Link" empty : https://stackoverflow.com/questions/79061459/azure-functions-application-insights-requests-operation-link-empty




当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 运维 监控
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
394 22
|
存储 分布式计算 资源调度
通过日志聚合将作业日志存储在HDFS中
如何通过配置Hadoop的日志聚合功能,将作业日志存储在HDFS中以实现长期保留,并详细说明了相关配置参数和访问日志的方法。
520 1
通过日志聚合将作业日志存储在HDFS中
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
651 4
|
存储 消息中间件 大数据
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
377 1
|
存储 消息中间件 大数据
大数据-68 Kafka 高级特性 物理存储 日志存储概述
大数据-68 Kafka 高级特性 物理存储 日志存储概述
223 1
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
607 1
|
存储 SQL 专有云
支持配置审计日志的存储数据库
审计日志作为企业监管平台的重要依据,同时也是“等保三级”认证的必要考察项之一。Dataphin V4.3版本支持设置平台日志的存储数据源,帮助用户快速获取审计日志,同时介绍了不同部署模式的Dataphin如何查看审计日志的方法。
473 5
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
734 9
|
9月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1531 139

热门文章

最新文章