問題描述
在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]