Application Insights 中記錄型和預先彙總的計量

注意

下列文件依賴Application Insights傳統 API。 Application Insights 的長期計劃是使用 OpenTelemetry 收集數據。 如需詳細資訊,請參閱 為 .NET、Node.js、Python 和 Java 應用程式啟用 Azure 監視器 OpenTelemetry。

本文說明以記錄和預先匯總計量為基礎的「傳統」Application Insights 計量之間的差異。 這兩種類型的計量都可供 Application Insights 的使用者使用。 每一個都會在監視應用程式健康情況、診斷和分析方面帶來唯一的值。 正在檢測應用程式的開發人員可以決定最適合特定案例的計量類型。 決策是根據應用程式的大小、預期的遙測量,以及計量精確度和警示的商務需求。

以記錄為基礎的計量

過去,Application Insights 中的應用程式監視遙測數據模型只以一些預先定義的事件類型為基礎,例如要求、例外狀況、相依性呼叫和頁面檢視。 開發人員可以使用 SDK 手動發出這些事件,方法是撰寫明確叫用 SDK 的程式代碼。 或者,他們可以依賴從自動結構自動收集事件。 不論是哪一種情況,Application Insights 後端都會將所有收集的事件儲存為記錄。 Azure 入口網站 中的 Application Insights 窗格可作為分析與診斷工具,從記錄可視化事件型數據。

使用記錄來保留一組完整的事件,可帶來絕佳的分析和診斷價值。 例如,您可以取得特定 URL 的確切要求數量,以及進行這些呼叫的不同使用者數量。 或者,您可以取得詳細診斷追蹤,包括任何使用者工作階段的例外狀況和相依性呼叫。 擁有這種類型的資訊可以改善應用程式健康情況和使用方式的可見度。 它也可以縮短診斷應用程式問題所需的時間。

同時,針對產生大量遙測的應用程式,收集一組完整的事件可能不切實際或甚至不可能。 對於事件量太高的情況,Application Insights 會實作數個遙測量縮減技術,以減少收集及儲存的事件數目。 這些技術包括 取樣篩選。 然而,降低儲存事件的數量也會降低計量正確性,因為在幕後,這些計量必須根據記錄中儲存的事件執行查詢對時間的彙總。

注意

在 Application Insights 中,以記錄中儲存的事件和度量的查詢時間匯總為基礎的計量稱為記錄型計量。 這些計量通常有許多來自事件屬性的維度,因此更適合分析。 這些計量的精確度會受到取樣和篩選的負面影響。

預先彙總的計量

除了記錄型計量之外,在 2018 年底,Application Insights 小組還提供公開預覽的計量,這些計量會儲存在針對時間序列優化的特製化存放庫中。 新的計量不再保留為具有許多屬性的個別事件。 相反地,它們會儲存為預先彙總的時間序列,而且只具備重要維度。 這項變更可讓新的計量在查詢時間更勝一籌。 擷取數據的速度會更快,而且需要較少的計算能力。 因此,會啟用新的案例,例如 計量維度的 近乎即時警示,以及回應更快速 儀錶板。

重要

以記錄為基礎的和預先匯總的計量都並存於ApplicationInsights中。 為了區分這兩者,在 Application Insights 用戶體驗中,預先匯總的計量現在稱為標準計量(預覽)。 事件中的傳統計量已重新命名為記錄型計量。

較新的 SDK (適用於 .NET 的 Application Insights 2.7 SDK 或更新版本) 會預先彙總收集期間的計量。 此程式適用於 預設傳送的標準計量,因此精確度不會受到取樣或篩選的影響。 它也適用於使用 GetMetric 傳送的自定義計量,這會導致數據擷取較少且成本較低。

對於未實作預先匯總的 SDK(也就是舊版的 Application Insights SDK 或瀏覽器檢測),Application Insights 後端仍會匯總 Application Insights 事件集合端點所收到的事件,以填入新的計量。 雖然您無法受益於透過網路傳輸的數據量減少,但您仍然可以使用預先匯總的計量,並體驗較佳的效能,並支援在收集期間未預先匯總計量的 SDK 的近乎即時維度警示。

收集端點在擷取取樣之前預先匯總事件。 基於這個理由,不論您搭配應用程式使用的 SDK 版本為何, 擷取取樣 都不會影響預先匯總計量的正確性。

SDK 支援的預先匯總計量數據表

目前的生產 SDK 標準計量 (SDK 預先匯總) 自訂計量(不含 SDK 預先匯總) 自訂計量 (使用 SDK 預先匯總)
.NET Core 和 .NET Framework 支援 (V2.13.1+) 透過 TrackMetric 支援 透過 GetMetric 支援 (V2.7.2+)
Java 不支援 透過 TrackMetric 支援 不支援
Node.js 支援 (V2.0.0+) 透過 TrackMetric 支援 不支援
Python 不支援 支援 部分支援透過 OpenCensus.stats

注意

使用 OpenCensus.stats 的 Python 計量實作與 GetMetric 不同。 如需詳細資訊,請參閱有關計量Python 檔。

無程式代碼支援的預先匯總計量數據表

目前的生產 SDK 標準計量 (SDK 預先匯總) 自訂計量(不含 SDK 預先匯總) 自訂計量 (使用 SDK 預先匯總)
ASP.NET 支援 1 不支援 不支援
ASP.NET Core 支援 2 不支援 不支援
Java 不支援 不支援 支援
Node.js 不支援 不支援 不支援
  1. ASP.NET 虛擬機/虛擬機擴展集和內部部署上的無程式代碼連結會發出沒有維度的標準計量。 Azure App 服務 也是如此,但集合層級必須設定為建議。 所有維度都需要 SDK。
  2. ASP.NET App Service 上的 Core 無程式代碼附加會發出沒有維度的標準計量。 所有維度都需要 SDK。

搭配 Application Insights 自定義計量使用預先匯總

您可以使用預先匯總搭配自訂計量。 這兩個主要優點包括:

  • 在自定義計量維度上設定和警示的能力
  • 減少從 SDK 傳送至 Application Insights 集合端點的數據量

有數 種方式可從 Application Insights SDK 傳送自定義計量。 如果您的 SDK 版本提供 GetMetric 和 TrackValue,這些方法是傳送自定義計量的慣用方式。 在此情況下,會在 SDK 內進行預先匯總。 此方法可減少儲存在 Azure 中的數據量,以及從 SDK 傳輸至 Application Insights 的數據量。 否則,請使用 trackMetric 方法,在數據擷取期間預先匯總計量事件。

自定義計量維度和預先匯總

您使用 OpenTelemetrytrackMetric 或 GetMetricTrackValue API 呼叫傳送的所有計量都會自動儲存在記錄和計量存放區中。 您可以在 Application Insights 的 customMetrics 數據表中,以及在名為 “azure.applicationinsights” 的自定義計量命名空間下,於計量總管中找到這些計量。 雖然自定義計量的記錄型版本一律會保留所有維度,但計量的預先匯總版本預設會以沒有維度儲存。 保留自定義計量維度是預覽功能,您可以從 [使用量和估計成本] 索引卷標中選取 [將自定義計量傳送至 Azure 計量存放區] 下的 [使用維度] 來開啟

Screenshot that shows usage and estimated costs.

配額

預先匯總的計量會儲存為 Azure 監視器中的時間序列。 適用於自訂計量的 Azure 監視器配額。

注意

超過配額可能會產生意外的後果。 Azure 監視器可能會在您的訂用帳戶或區域中變得不可靠。 若要瞭解如何避免超過配額,請參閱 設計限制和考慮

為什麼預設會關閉自定義計量維度的集合?

默認會關閉自定義計量維度的集合,因為未來儲存具有維度的自定義計量將會與 Application Insights 分開計費。 儲存非維度自定義計量仍然是免費的(最多配額)。 您可以在我們的官方 定價頁面上瞭解即將推出的定價模式變更。

建立圖表並探索記錄型和標準預先匯總計量

使用 Azure 監視器計量總 管從預先匯總和記錄型計量繪製圖表,以及使用圖表撰寫儀錶板。 選取您想要的 Application Insights 資源之後,請使用命名空間選擇器,在標準 (預覽) 和記錄型計量之間切換。 您也可以選取自訂計量命名空間。

Screenshot that shows Metric namespace.

Application Insights 計量的定價模式

將計量擷取至 Application Insights,無論是以記錄為基礎或預先匯總,都會根據內嵌數據的大小產生成本。 如需詳細資訊,請參閱 Azure 監視器記錄定價詳細資料 (部分機器翻譯)。 您的自定義計量,包括其所有維度,一律會儲存在 Application Insights 記錄存放區中。 此外,預設不會將具有維度的自定義計量預先匯總版本轉送至計量存放區。

選取 [在自定義計量維度上啟用警示] 選項,以儲存計量存放區中預先匯總計量的所有維度,可能會根據自定義計量定價產生額外的成本

下一步