问题描述
在Function App中配置了无代码模式的Application Insights,但有时候发现,超过1MB的文件上传/下载操作成功。但是在Application Insights中,却没有发现请求日志?这是一种什么情况呢?
问题解答
Application Insights 是具有采样功能的,当传入执行的速率超过指定的阈值时,Application Insights 开始随机忽略某些传入执行。
配置采样
Application Insights 具有采样功能,可以防止在峰值负载时为已完成的执行生成过多的遥测数据。
当传入执行的速率超过指定的阈值时,Application Insights 开始随机忽略某些传入执行。
每秒执行的最大次数的默认设置为 20。
可以在 host.json 中配置采样。 下面是一个示例:
{ "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "maxTelemetryItemsPerSecond" : 20, "excludedTypes": "Request;Exception" } } } }
根据采样率推断并且基于当时执行请求操作数每秒>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]