【Azure Function & Application Insights】调用Function上传和下载文件,有时候遇见大于1MB的文件的日志没有记录在Application Insights中 - LuBu0505/My-Code GitHub Wiki

问题描述

在Function App中配置了无代码模式的Application Insights,但有时候发现,超过1MB的文件上传/下载操作成功。但是在Application Insights中,却没有发现请求日志?这是一种什么情况呢? image.png

问题解答

Application Insights 是具有采样功能的,当传入执行的速率超过指定的阈值时,Application Insights 开始随机忽略某些传入执行。

配置采样

Application Insights 具有采样功能,可以防止在峰值负载时为已完成的执行生成过多的遥测数据。

当传入执行的速率超过指定的阈值时,Application Insights 开始随机忽略某些传入执行。

每秒执行的最大次数的默认设置为 20。

可以在 host.json 中配置采样。 下面是一个示例:

> 
> { "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "maxTelemetryItemsPerSecond" : 20, "excludedTypes": "Request;Exception" }
>     }
>   }

图片上传失败...(image-d67ee7-1711974833378)(javascript:void(0); "复制代码")

根据采样率推断并且基于当时执行请求操作数每秒>20次,所以生成的日志由于采样功能会忽略部分日志的采集。如果需要全部采集Function App的日志,可以把采样率设置为100%(initialSamplingPercentage)。

如:

{ "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "initialSamplingPercentage" : 100.0, "excludedTypes": "Request;Exception" }
    }
  }
}

参数介绍:

  • maxTelemetryItemsPerSecond:  默认值20,表示每个服务器主机上每秒记录的遥测项的目标数目。 如果应用在多个主机上运行,请将此值降低至总体目标流量率的范围内。
  • initialSamplingPercentage: 默认值100.0,表示在采样过程开始时应用的初始采样百分比,以动态改变百分比。 不要在调试时减小值,它会导致日志收集不全面。

参考资料

Azure Functions 2.x 的 host.json 参数 :  https://learn.microsoft.com/zh-cn/azure/azure-functions/functions-host-json#applicationinsightssamplingsettings

Azure Function 采样率配置介绍:https://learn.microsoft.com/zh-cn/azure/azure-functions/configure-monitoring?tabs=v2#configure-sampling

[END]

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