共用方式為


Application Insights 中的計量

Application Insights 支援三種不同類型的計量:標準(預先匯總)、記錄型和自定義計量。 每個類型在監視應用程式健康情況、診斷和分析方面帶來獨特的價值。 正在檢測應用程式的開發人員可以決定最適合特定案例的計量類型。 決定是根據應用程式的大小、預期的遙測數量,以及計量精確度和警示的商務需求而進行。 本文說明所有支援的計量類型之間的差異。

標準計量

Application Insights 會自動收集及監視標準計量。 這些預先定義的計量涵蓋各種不同的效能和使用指標,例如CPU使用量、記憶體耗用量、要求率和回應時間。 您不需要設定任何設置即可開始使用它們。 在收集期間,服務會預先匯總標準計量,並將它們儲存為只有密鑰維度的特殊存放庫中的時間序列。 此設計可改善查詢效能。 由於其速度和結構,標準計量最適合用於近乎即時的警示和響應式 儀錶板

以記錄為基礎的計量

Application Insights 中的記錄型計量是個查詢時間概念。 系統會將它們表示為從應用程式記錄數據建置的時間序列。 它不會在收集或儲存期間預先匯總基礎記錄。 相反地,它會保留每個日誌條目的所有屬性。

此保留可讓您在查詢記錄型計量時,使用記錄屬性作為維度。 您可以套用指標圖表篩選指標分割,賦予這些指標強大的分析和診斷價值。

不過,遙測數據量減少技術會影響基於記錄的度量。 取樣遙測篩選等技術,通常用來減少大量應用程式的數據,減少收集的記錄項目數目。 此縮減可降低記錄型計量的精確度。

自訂計量 (預覽)

Application Insights 中的自定義計量可讓您定義及追蹤應用程式特有的特定度量。 您可以藉由儀器化程式碼,將自定義遙測數據傳送至 Application Insights 來建立這些指標。 自定義計量可讓您彈性地監視標準計量未涵蓋之應用程式的任何層面,讓您深入瞭解應用程式的行為和效能。

如需詳細資訊,請參閱 Azure 監視器中的自定義計量(預覽版)。

附註

Application Insights 也提供稱為 「即時計量」數據流的功能,可讓您近乎即時地監視 Web 應用程式,而且不會儲存任何遙測數據。

計量比較

功能 標準計量 以記錄為基礎的計量 自訂計量
資料來源 在運行時間期間收集的預先匯總時間序列數據。 使用 Kusto 查詢衍生自記錄資料。 透過 Application Insights SDK 或 API 收集的使用者定義計量。
細微性 固定間隔 (1 分鐘)。 取決於記錄數據本身的數據粒度。 根據使用者定義計量的彈性細微性。
準確度 高,不受記錄取樣影響。 可能會受到取樣和篩選的影響。 高精確度,特別是在使用 GetMetric 等預先匯總的方法時。
成本 包含在 Application Insights 定價中。 根據記錄資料的擷取和查詢成本。 請參閱 定價模式和保留
配置 以最低程度的設定自動提供。 需要設定記錄查詢,才能從記錄數據擷取所需的計量。 需要程序代碼中的自定義實作和組態。
查詢效能 快速,因為預先匯總。 速度較慢,因為它牽涉到查詢記錄數據。 取決於數據量和查詢複雜度。
儲存 儲存為 Azure 監視器計量存放區中的時間序列資料。 已儲存為 Log Analytics 工作區中的記錄。 儲存在Log Analytics和 Azure 監視器計量存放區中。
警示 支援即時警示。 允許根據詳細記錄數據設置複雜的警示情境。 根據使用者定義的指標進行彈性警示。
服務限制 受限於 Application Insights 限制 受限於 Log Analytics工作區限制 受限於免費計量的配額和額外維度的成本。
用例 即時監控、性能儀表板和快速洞察。 詳細的診斷、疑難解答和深入分析。 量身打造的效能指標和商務特定計量。
範例 CPU 使用量、記憶體使用量、要求持續時間。 要求計數、例外狀況追蹤、相依性呼叫。 自定義應用程式特定的計量,例如用戶參與、功能使用量。

計量預先匯總

OpenTelemetry SDK 和某些 Application Insights SDK (傳統 API) 會在收集期間預先匯總計量,以減少從 SDK 傳送到遙測通道端點的數據量。 這個流程適用於預設傳送的標準計量,因此精確度不會受到取樣或篩選的影響。 它也適用於使用 OpenTelemetry APIGetMetric 和 TrackValue 傳送的自定義計量,這會產生較少的數據擷取和較低的成本。 如果您的 Application Insights SDK 版本支援 GetMetric 和 TrackValue,則它是傳送自定義計量的慣用方法。

某些 SDK 不會實作預先匯總。 範例包括較舊版本的 Application Insights SDK 和基於瀏覽器的檢測工具。 在這些情況下,後端會藉由匯總透過遙測通道接收的事件,來建立新的計量。

若要傳送自定義計量,請使用 trackMetric 方法。

這些 SDK 不會減少傳送的數據量。 不過,您仍然可以使用它們所產生的預先匯總計量。 此設定可提供較佳的效能,並支援近乎即時的維度警示,即使在收集期間也不需要預先匯總。

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

下表列出預先彙總的預先彙總之處。

使用 Azure Monitor 的 OpenTelemetry 發行版進行計量的預先匯總

目前的生產 SDK 標準計量預先匯總 自定義計量預先匯總
ASP.NET Core SDK 透過 OpenTelemetry API (部分機器翻譯) 的 SDK
.NET (透過匯出工具) SDK 透過 OpenTelemetry API (部分機器翻譯) 的 SDK
Java (3.x) SDK 透過 OpenTelemetry API (部分機器翻譯) 的 SDK
Java 原生 SDK 透過 OpenTelemetry API (部分機器翻譯) 的 SDK
Node.js SDK 透過 OpenTelemetry API (部分機器翻譯) 的 SDK
Python SDK 透過 OpenTelemetry API (部分機器翻譯) 的 SDK

使用 Application Insights SDK 預先匯總計量 (傳統 API)

目前的生產 SDK 標準計量預先匯總 自定義計量預先匯總
.NET Core 和 .NET Framework SDK (V2.13.1+) SDK (V2.7.2+) 透過 GetMetric
透過 TrackMetric (部分機器翻譯) 的遙測通道端點
Java (2.x) 遙測通道端點 透過 TrackMetric (部分機器翻譯) 的遙測通道端點
JavaScript (瀏覽器) 遙測通道端點 透過 TrackMetric (部分機器翻譯) 的遙測通道端點
Node.js 遙測通道端點 透過 TrackMetric (部分機器翻譯) 的遙測通道端點

警告

使用自動化工具進行的計量預先彙總

使用自動化偵測時,SDK 會自動新增至您的應用程式程式碼,且無法自訂。 針對自定義計量,需要手動檢測。

目前的生產 SDK 標準計量預先匯總 自定義計量預先匯總
ASP.NET Core SDK 1 不支援
ASP.NET SDK 2 不支援
JAVA SDK 支援 3
Node.js SDK 不支援
Python SDK 不支援

註腳

  • 1App Service 上的 ASP.NET Core 自動檢測 (部分機器翻譯) 會發出沒有維度的標準計量。 所有維度都需要手動檢測。
  • 2虛擬機器/虛擬機器擴展集 (部分內容可能是機器或 AI 翻譯) 和內部部署 (部分內容可能是機器或 AI 翻譯) 上的 ASP.NET 自動檢測會發出沒有維度的標準計量。 Azure App Service 也一樣,但收集層級必須設定為建議。 所有維度都需要手動檢測。
  • 3 搭配自動化儀表化使用的 Java 代理程式會擷取受歡迎的庫發出的度量,並將其以自定義度量的形式傳送至 Application Insights。

自訂計量維度和預先彙總

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

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

配額

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

附註

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

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

Application Insights 預設會關閉自定義計量維度的集合。 使用維度儲存自訂計量會產生與 Application Insights 不同的計費。 儲存非維度自定義計量會維持可用狀態,最多可達配額。 如需詳細資訊,請參閱 Azure 監視器定價頁面

建立圖表並探索計量

使用 Azure 監控器 指標瀏覽器 來繪製從預先匯總的、基於日誌的和自定義的指標生成的圖表,並創建包含圖表的儀表板。 選取您想要的 Application Insights 資源之後,請使用命名空間選擇器在計量之間切換。

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

Application Insights 指標的定價方案

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

選取 [ 在自定義計量維度上啟用警示 ] 選項,以儲存計量存放區中預先匯總計量的所有維度,可能會導致根據 自定義計量定價增加費用。

可用的計量

下列各節列出具有支援之彙總和維度的計量。 記錄型計量的詳細資料包括基礎 Kusto 查詢陳述式。

重要

  • 時間序列限制:每個計量在24小時內最多只能有5,000個時間序列。 達到此限制之後,該計量點的所有維度值都會取代為常數 Maximum values reached

  • 基數限制: 每個維度在七天期間內支援有限的唯一值數目。 達到限制時,Azure 監視器會將所有新值取代為常數 Other values。 下表列出每個維度的基數限制。

可用性計量

[可用性] 類別中的計量可讓您查看世界各地觀察點取得的 Web 應用程式健康情況。 設定可用性測試 ,以從這個類別開始使用任何計量。

可用性 (availabilityResults/availabilityPercentage)

可用性計量會顯示未偵測到任何問題的 Web 測試回合百分比。 可能最低的值為 0,表示所有 Web 測試回合都失敗。 100 的值表示所有 Web 測試回合都通過驗證準則。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
百分比 Avg Run location availabilityResult/location 50
Test name availabilityResult/name 100

可用性測試期間 (availabilityResults/duration)

可用性測試持續時間計量會顯示 Web 測試執行所花費的時間。 針對多步驟 Web 測試,計量會反映所有步驟的總運行時間。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
毫秒 Avg、Max、Min Run location availabilityResult/location 50
Test name availabilityResult/name 100
Test result availabilityResult/success 2

可用性測試 (availabilityResults/count)

可用性測試計量會反映 Azure 監視器所執行的 Web 測試計數。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Run location availabilityResult/location 50
Test name availabilityResult/name 100
Test result availabilityResult/success 2

瀏覽器計量

Application Insights JavaScript SDK 會從實際的用戶瀏覽器收集瀏覽器計量。 這些計量可讓您深入瞭解 Web 應用程式的用戶經驗。 SDK 通常不會取樣瀏覽器指標,因此它們會提供較高的使用數據精確度。 相反地,伺服器端計量通常會使用取樣,這可能會扭曲結果。

附註

若要收集瀏覽器計量,您的應用程式必須使用Application Insights JavaScript SDK 進行檢測

瀏覽器頁面載入時間(瀏覽器計時/總持續時間)

測量單位 支援的彙總 支援的維度
毫秒 Avg、Max、Min

用戶端處理時間 (browserTiming/processingDuration)

測量單位 支援的彙總 支援的維度
毫秒 Avg、Max、Min

頁面載入網路連線時間 (browserTimings/networkDuration)

測量單位 支援的彙總 支援的維度
毫秒 Avg、Max、Min

接收回應時間 (browserTimings/receiveDuration)

測量單位 支援的彙總 支援的維度
毫秒 Avg、Max、Min

傳送要求時間 (browserTimings/sendDuration)

測量單位 支援的彙總 支援的維度
毫秒 Avg、Max、Min

失敗指標

失敗中的指標顯示處理請求、相依呼叫和拋出例外的問題。

瀏覽器例外狀況 (exceptions/browser)

此計量會反映在瀏覽器中執行的應用程式代碼所拋出的例外狀況數目。 計量中只會包含使用 trackException() Application Insights API呼叫追蹤的例外狀況。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role name cloud/roleName 100

相依性呼叫失敗 (dependencies/failed)

失敗的相依性呼叫數目。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Dependency performance dependency/performanceBucket 20
Dependency type dependency/type 100
Is traffic synthetic operation/synthetic 10
Result code dependency/resultCode 100
Target of dependency call dependency/target 100

例外狀況 (exceptions/count)

每次當您將例外狀況記錄至 Application Insights 時,都會呼叫 SDK 的 trackException() 方法 。 [例外狀況] 計量會顯示已記錄的例外狀況數目。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Device type client/type 2

失敗的要求 (requests/failed)

被標示為 失敗的伺服器請求追蹤數量。 根據預設,Application Insights SDK 會自動將傳回 HTTP 回應碼 5xx 或 4xx(401 除外)的每個伺服器要求標示為失敗的要求。 您可以修改自訂遙測初始設定式 (部分內容可能是機器或 AI 翻譯) 中要求遙測項目的 success 屬性來自訂此邏輯。 如需各種響應碼的詳細資訊,請參閱 Application Insights 遙測數據模型

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Is synthetic traffic operation/synthetic 10
Request performance request/performanceBucket 20
Result code request/resultCode 100

伺服器例外狀況 (exceptions/server)

此計量會顯示伺服器例外狀況的數目。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100

效能計數器

Application Insights 會使用系統和程式計量 (稱為效能計數器) 來協助診斷效能問題並支援內建體驗。

Azure 監視器 OpenTelemetry 發行版會將這些計數器匯出為自訂度量項目至performanceCounters表格,每個度量項目都會由唯一的度量名稱識別。

計數器名稱和說明

Counter 名稱 Description 量值
可用的記憶體 Available Bytes 可用於執行中的程序的實體記憶體。 Bytes
例外率 # of Exceps Thrown / sec 應用程式每秒拋出的例外數。 每秒例外狀況
請求執行時間 Request Execution Time 完成一個請求的平均時間。 毫秒
請求率 Requests/Sec 每秒處理的請求。 每秒請求數
佇列中的請求 Requests In Application Queue 目前在應用程式佇列中等待的請求。 Count
處理序 CPU % % Processor Time 應用程式流程的 CPU 利用率。 百分比
正規化處理序 CPU % % Processor Time Normalized 程序 CPU 利用率除以邏輯處理器數量。 百分比
流程輸入/輸出速率 IO Data Bytes/sec 應用流程的 I/O 吞吐量。 每秒字節數
處理序:私用位元組 Private Bytes 應用程式程序使用的私有記憶體。 Bytes
處理器時間 %
類: 處理器
% Processor Time 總機器 CPU 使用率。 百分比
處理器時間 %
類別: 過程
% Processor Time 程序 CPU 利用率。 百分比

由效能計數器增強的體驗

列出效能計數器類型

如需可用效能計數器的完整清單,其會因語言特定的執行階段和設定而異:

  1. 在 Azure 入口網站 中開啟您的 Application Insights 資源
  2. 在 [監視] 底下,選取 [記錄]
  3. 從 [選取資料表] 功能表中,選擇 performanceCounters,然後再選擇 [執行】

或者,執行下列查詢。

// List distinct performance counter names with category and counter.
performanceCounters
| where timestamp > ago(1d)
| summarize by name, category, counter
| order by name asc, category asc

伺服器計量

相依性呼叫 (dependencies/count)

此計量與相依性呼叫數目有關。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Dependency performance dependency/performanceBucket 20
Dependency type dependency/type 100
Is traffic synthetic operation/synthetic 10
Result code request/resultCode 2
Successful call dependency/success 100
Target of a dependency call dependency/target 100

相依性期間 (dependencies/duration)

此計量是指相依性呼叫的持續時間。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
毫秒 Avg、Max、Min Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Dependency performance dependency/performanceBucket 20
Dependency type dependency/type 100
Is traffic synthetic operation/synthetic 10
Result code request/resultCode 100
Successful call dependency/success 2
Target of a dependency call dependency/target 100

伺服器要求速率 (requests/rate)

此計量會顯示 Web 應用程式收到的連入伺服器要求數目。

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
每秒計數 Avg Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Is traffic synthetic operation/synthetic 10
Request performance request/performanceBucket 20
Result code request/resultCode 100
Successful call dependency/success 2

伺服器要求 (requests/count)

測量單位 聚合 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Is traffic synthetic operation/synthetic 10
Request performance request/performanceBucket 20
Result code request/resultCode 100
Successful call dependency/success 2

伺服器回應時間 (要求/持續時間)

此計量會反映伺服器處理連入要求所需的時間。

毫秒 Avg、Max、Min 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Is traffic synthetic operation/synthetic 10
Request performance request/performanceBucket 20
Result code request/resultCode 100
Successful call dependency/success 2

使用量指標

網頁檢視載入時間 (pageViews/duration)

此計量是指PageView事件載入所花費的時間量。

毫秒 Avg、Max、Min 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
毫秒 Avg、Max、Min Cloud role name cloud/roleName 100
Is traffic synthetic operation/synthetic 10

頁面檢視 (pageViews/count)

使用 TrackPageView() Application Insights API 記錄的 PageView 事件計數。

Count Count 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
毫秒 Avg、Max、Min Cloud role name cloud/roleName 100
Is traffic synthetic operation/synthetic 10

追蹤 (traces/count)

使用 TrackTrace() Application Insights API 呼叫所記錄的追蹤陳述式計數。

Count Count 維度名稱
(計量瀏覽器)
維度名稱
(日誌分析)
基數限制
Count Count Cloud role instance cloud/roleInstance 100
Cloud role name cloud/roleName 100
Is traffic synthetic operation/synthetic 10
Severity level trace/severityLevel 100

自訂計量

不適用於標準計量。

使用 Application Insights REST API 直接存取記錄型計量

Application Insights REST API 可讓您以程序設計方式擷取記錄型計量。 它也具有選擇性參數ai.include-query-payload,當新增至查詢字串時,會提示 API 不僅傳回時間序列數據,還會提示用來擷取它的 Kusto 查詢語言 (KQL) 語句。 使用此參數可能會對使用者有幫助,幫助他們理解ログ收集与解析中的原始事件與生成的日誌型指標之間的關聯。

若要直接存取您的數據,請使用 KQL,將 參數 ai.include-query-payload 傳遞至查詢中的 Application Insights API。

附註

若要擷取基礎記錄查詢,DEMO_APPDEMO_KEY需要取代 。 如果您只想擷取 KQL 語句,而不是您自己的應用程式的時間序列數據,您可以直接複製並貼到瀏覽器搜尋列中。

api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload

此範例顯示計量 Authenticated Users的傳回 KQL 語句。 在此範例中, "users/authenticated" 是計量標識符。

output
{
    "value": {
        "start": "2024-06-21T09:14:25.450Z",
        "end": "2024-06-21T21:14:25.450Z",
        "users/authenticated": {
            "unique": 0
        }
    },
    "@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}

下一步