【Azure Function & Application Insights】呼叫Function上傳和下載檔案,有時候遇見大於1MB的檔案的日誌沒有記錄在Application Insights中

路边两盏灯發表於2024-04-01

問題描述

在Function App中配置了無程式碼模式的Application Insights,但有時候發現,超過1MB的檔案上傳/下載操作成功。但是在Application Insights中,卻沒有發現請求日誌?這是一種什麼情況呢?

【Azure Function & Application Insights】呼叫Function上傳和下載檔案,有時候遇見大於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]

相關文章