共用方式為


Application Insights 中記錄型和預先彙總的計量 (部分機器翻譯)

注意

下列文件以 Application Insights 傳統 API 為依據。 Application Insights 的長期計劃是使用 OpenTelemetry 收集資料。 如需詳細資訊,請參閱 啟用適用於 .NET、Node.js、Python 和 JAVA 應用程式的 Azure 監視器 OpenTelemetry我們的 OpenTelemetry 藍圖。 移轉指導適用於 .NETNode.jsPython

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

以記錄為基礎的計量

以往,在 Application Insights 中監視遙測資料模型的應用程式才完全以少數預先定義的事件類型為基礎,例如要求、例外狀況、相依性呼叫、頁面檢視等等。 開發人員可以撰寫可明確叫用 SDK 的程式碼,使用 SDK 手動發出這些事件。 或者,他們也可以依賴從自動檢測自動收集事件。 無論是哪一種情況,Application Insights 後端會將全部收集的事件儲存為記錄。 Azure 入口網站中的 Application Insights 窗格會作為分析與診斷工具,以視覺化方式呈現記錄中以事件為基礎的資料。

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

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

注意

在 Application Insights 中,以事件的查詢階段彙總為基礎的計量和以記錄中儲存的量測為基礎的計量都稱為記錄型計量。 這些計量通常有許多來自事件屬性的維度,使其更適合用於分析。 取樣和篩選會對這些計量的精確度造成負面影響。

預先彙總的計量

除了記錄型計量,Application Insights 團隊在 2018 年年底推出計量公開預覽,而這些計量會儲存在針對時間序列最佳化的特製化存放庫中。 新的計量不再保存為具有許多屬性的個別事件。 相反地,它們會儲存為預先彙總的時間序列,而且只有重要維度。 這項變更可讓新的計量在查詢階段表現優異。 擷取資料更快速地發生,而且需要較少的計算能力。 因此造就新的案例,例如近乎即時的計量維度警示和更有回應的儀表板

重要

記錄型和預先彙總的計量兩者共存於 Application Insights 中。 為了在 Application Insights 使用者體驗中區分這兩者,預先彙總的計量現在稱為「標準計量」。 事件中的傳統計量已重新命名為「記錄型計量」。

較新的 SDK (適用於 .NET 的 Application Insights 2.7 SDK 或更新版本) 會預先彙總收集期間的計量。 這個流程適用於預設傳送的標準計量,因此精確度不會受到取樣或篩選的影響。 這也適用於使用 GetMetric 傳送的自訂計量,產生的資料擷取和成本都較少。

對於未實作預先彙總的 SDK (也就是舊版的 Application Insights SDK 或適用於瀏覽器檢測的 SDK),Application Insights 後端仍會藉由彙總 Application Insights 事件收集端點所接收到的事件,填入新的計量。 雖然您並未因透過網路傳輸的資料量減少而受惠,但仍可使用預先彙總的計量和體驗更佳的效能,以及支援在收集期間並未預先彙總計量的 SDK 提供幾近即時的維度警示。

收集端點會在擷取取樣前預先彙總事件。 因此,無論您使用哪個版本的 SDK 搭配您的應用程式,擷取取樣決不會影響預先彙總的計量精確度。

SDK 支援的預先彙總計量資料表

目前實際執行環境 SDK 標準計量 (SDK 預先彙總) 自訂計量 (沒有 SDK 預先彙總) 自訂計量 (有 SDK 預先彙總)
.NET Core 和 .NET Framework 支援 (2.13.1 版以上) 透過 TrackMetric 支援 透過 GetMetric 支援 (2.7.2 版以上)
Java 不支援 透過 TrackMetric 支援 不支援
Node.js 支援 (2.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 Service 也是如此,但集合層級必須設定為建議。 所有維度都需要此 SDK。
  2. App Service 上的 ASP.NET Core 自動檢測會發出沒有維度的標準計量。 所有維度都需要 SDK。

使用預先彙總搭配 Application Insights 自訂計量

您可以使用預先彙總搭配自訂計量。 有兩個主要優勢:

  • 設定自訂計量的維度和發出警示
  • 減少從 SDK 傳送至 Application Insights 收集端點的資料量

從 Application Insights SDK 傳送自訂計量的方法有好幾種。 如果您的 SDK 版本提供 GetMetric 和 TrackValue 方法,這是傳送自訂計量慣用的方式。 在此情況下,預先彙總會發生於 SDK 內部。 此方法可減少 Azure 中儲存的資料量,也可減少從 SDK 傳輸至 Application Insights 的資料量。 否則,請使用 trackMetric 方法,此方法會在資料擷取期間預先彙總計量事件。

自訂計量維度和預先彙總

您使用 OpenTelemetrytrackMetricGetMetric 和 TrackValue API 呼叫傳送的所有計量,都會自動儲存在記錄和計量存放區中。 在 Application Insights 的 customMetrics 資料表中,以及在名為「azure.applicationinsights」的自訂計量命名空間下的計量瀏覽器中,可以找到這些計量。 雖然記錄型自訂計量版本一律會保留所有維度,但是預先彙總的計量版本儲存時預設不含任何維度。 保留自訂計量維度是預覽功能,您可以選取 [將自訂計量傳送至 Azure Metric Store] 下的 [具有維度],從 [使用量和估計成本] 索引標籤中開啟。

顯示 [使用量和估計成本] 的螢幕擷取畫面。

配額

預先彙總的計量會在 Azure 監視器中以時間序列儲存。 套用自訂計量上的 Azure 監視器配額

注意

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

自訂計量維度的收集為何預設會關閉?

自訂計量維度的集合預設會關閉,因為未來儲存具有維度的自訂計量將與 Application Insights 分開計費。 儲存無維度的自訂計量仍為免費 (達到配額前)。 您可以在我們的官方定價頁面上了解即將推出的定價模型變更。

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

使用 Azure 監視器計量瀏覽器,根據預先彙總和記錄型計量繪製圖表,以及編寫具有圖表的儀表板。 選取所需的 Application Insights 資源之後,請使用命名空間選擇器在標準與記錄型計量之間進行切換。 也可以選取自訂計量命名空間。

顯示計量命名空間的螢幕擷取畫面。

Application Insights 計量的定價模型

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

選取 [啟用自訂計量維度的警示] 選項,以儲存計量存放區中預先彙總計量的全部維度,可以根據自訂計量定價產生額外成本

下一步