Application Insight 資料取樣設定
最近在查系統問題,為了追查使用者傳送的參數與系統使用狀況時,查看 Application Insight 紀錄時,卻發現紀錄明顯比實際傳送過的訊息少!
原來是因為 Application Insight 在所有最新版本的 ASP.NET 和 ASP.NET Core SDK 中預設啟用調適型取樣 (Adaptive Sampling),也就是依據資料數量進行取樣調整,以減少流量與資料成本。
查看方式為:
Step 1. 登入 Azure Portal
Step 2. 開啟 Web App 對應的 Application Insight 查詢視窗
Step 3. 輸入以下指令:
有以下三種取樣模式:
為了記錄所有應用程式使用狀況,需要停用取樣,根據不同程式版本,關閉取樣的設定方式也不同:
設定完成後,可在幾個小時後再確認看看,設定是否生效?
確認方式與上述相同,根據結果就可以看出前後差異囉
(由於我們關注的是 request 的取樣數,因此僅顯示 request 資料)
原來是因為 Application Insight 在所有最新版本的 ASP.NET 和 ASP.NET Core SDK 中預設啟用調適型取樣 (Adaptive Sampling),也就是依據資料數量進行取樣調整,以減少流量與資料成本。
確認目前取樣比例:
查看方式為:Step 1. 登入 Azure Portal
Step 2. 開啟 Web App 對應的 Application Insight 查詢視窗
Step 3. 輸入以下指令:
union
requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Application Insight 取樣模式:
有以下三種取樣模式:- 調適型取樣 (Adaptive sampling):
系統自動調整 ASP.NET/ASP.NET Core 應用程式中從 SDK 傳送的遙測量;為預設模式 - 固定速率取樣 (Fixed-rate sampling):
比例由開發者自行設定。 用戶端和伺服器會同步處理它們的取樣 - 內嵌取樣 (Ingestion sampling):
適用於 Azure 入口網站,根據自訂的取樣比例,捨棄來自應用程式的一些遙測資料。不會減少從應用程式傳送的遙測流量,但可協助讓流量不要超過每月配額。
停用取樣
為了記錄所有應用程式使用狀況,需要停用取樣,根據不同程式版本,關閉取樣的設定方式也不同:-
非 ASP.Net Core (例如 .Net Framework):
尋找在專案中的設定檔 - ApplicationInsights.config 中,將AdaptiveSamplingTelemetryProcessor
節點移除或設成註解。
(參考來源)
-
ASP.Net Core:
透過程式設定:
public void ConfigureServices(IServiceCollection services) { // ... var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions(); aiOptions.EnableAdaptiveSampling = false; services.AddApplicationInsightsTelemetry(aiOptions); // ... }
(參考來源)
設定完成後,可在幾個小時後再確認看看,設定是否生效?
確認方式與上述相同,根據結果就可以看出前後差異囉
(由於我們關注的是 request 的取樣數,因此僅顯示 request 資料)
留言