Application Insights 遙測資料模型

Application Insights 會將遙測從 Web 應用程式傳送到 Azure 入口網站,以便您可以分析應用程式的效能和使用量。 遙測模型已經過標準化,如此就可以建立平台與無關語言的監視。

Application Insights 所收集的資料會建立一般應用程式執行模式的模型。

Diagram that shows an Application Insights telemetry data model.

下列遙測類型可用來監視您應用程式的執行。 Application Insights SDK 會從 Web 應用程式架構自動收集三種類型:

  • 要求:產生以記錄應用程式所接收的要求。 例如,Application Insights Web SDK 會針對您 Web 應用程式接收的每個 HTTP 要求產生「要求」遙測項目。

    作業是由處理要求的執行執行緒所組成。 您也可以撰寫程式碼來監視其他作業類型,例如,定期處理資料之 Web 工作或函式中的「喚醒」。 每個作業都有識別碼。 此識別碼可用來將應用程式處理要求時產生的所有遙測加以分組。 每個作業可能會成功或失敗,而且有持續時間。

  • 例外狀況:通常表示造成作業失敗的例外狀況。

  • 相依性:代表從應用程式對外部服務或儲存體的呼叫,例如 REST API 或 SQL。 在 ASP.NET 中,SQL 的相依性呼叫是由 System.Data 所定義。 HTTP 端點的呼叫是由 System.Net 所定義。

Application Insights 針對自訂遙測提供三種資料類型:

  • 追蹤:可直接使用或透過配接器,以您所熟悉的檢測架構 (例如 Log4NetSystem.Diagnostics) 來實作診斷記錄。
  • 事件:通常用於擷取使用者與您服務的互動,藉以分析使用模式。
  • 計量:用於報告定期的純量測量。

每個遙測項目可以定義內容資訊,例如應用程式版本或使用者工作階段識別碼。 內容是一組在某些情況下會解除封鎖的強型別欄位。 正確初始化應用程式版本之後,Application Insights 可以偵測與重新部署相互關聯的應用程式行為中是否有新模式。

您可以使用工作階段識別碼,來計算中斷或對使用者造成問題的影響。 計算特定失敗相依性、錯誤追蹤或重大例外狀況之工作階段識別碼值的相異計數,可讓您充分瞭解影響。

Application Insights 遙測模型會定義將遙測與其所屬作業相互關聯的方式。 例如,要求會發出 SQL Database 呼叫,並記錄診斷資訊。 針對會往回繫結至要求遙測的遙測項目,您可以設定這些遙測項目的相互關聯內容。

結構描述的增強功能

Application Insights 資料模型是基本但功能強大的方式,可建立應用程式遙測的模型。 我們盡量讓模型保持簡單且輕鬆,就能支援重要的情節,並擴充結構描述以供進階使用。

若要報告資料模型或結構描述的問題及建議,請使用我們的 GitHub 存放庫

要求

要求遙測項目 (在 Application Insights 中) 代表外部要求對應用程式所觸發的執行邏輯順序。 每個要求執行都是由包含全部執行參數的唯一 idurl 所識別。

您可以將這些要求依邏輯 name 群組,並定義這項要求的 source。 程式碼執行可能會導致 successfail,並且有特定 duration。 您可以使用 resultCode,進一步將成功和失敗執行分組。 信封層級上定義的要求遙測所用的開始時間。

要求遙測會使用自訂 propertiesmeasurements支援標準的擴充性模型。

注意

針對檢測金鑰擷取的支援將在 2025 年 3 月 31 日結束。 檢測金鑰擷取將會繼續運作,但我們不再提供該功能的更新或支援。 轉換至連接字串以利用新功能

名稱

此欄位是要求的名稱,這代表處理要求所採用的程式碼路徑。 低的基數值可使群組要求更妥善。 針對 HTTP 要求,這代表 HTTP 方法和 URL 路徑範本,例如無實際 id 值的 GET /values/{id}

Application Insights web SDK 會將要求名稱依「現狀」傳送 (考量字母大小寫)。 UI 上的群組會區分大小寫,因此 GET /Home/Index 會與 GET /home/INDEX 分開計算,即使它們通常會產生相同的控制器和動作執行。 原因是 URL 通常會區分大小寫。 您可能要查看 URL 出現的全部 404 錯誤是否都以大寫輸入。 請參閱部落格文章 (英文) 深入了解由 ASP.NET Web SDK 要求的名稱集合。

長度上限:1,024 個字元

識別碼

識別碼是要求呼叫執行個體的識別碼。 這用於要求和其他遙測項目之間的相互關聯。 識別碼必須是全域唯一的識別碼。 如需詳細資訊,請參閱 Application Insights 中的遙測相互關聯

長度上限:128 個字元

URL

URL 是包含全部查詢字串參數的要求 URL。

長度上限:2,048 個字元

來源

來源是要求的來源。 範例包括呼叫端的檢測金鑰或呼叫端的 IP 位址。 如需詳細資訊,請參閱 Application Insights 中的遙測相互關聯

長度上限:1,024 個字元

期間

要求持續時間的格式為 DD.HH:MM:SS.MMMMMM。 這必須是正數且小於 1000 天。 這是必要欄位,因為要求遙測代表開頭與結尾的作業。

回應碼

回應碼是要求執行的結果。 這是 HTTP 要求的 HTTP 狀態碼。 可能是 HRESULT 值或其他要求類型的例外狀況類型。

長度上限:1,024 個字元

成功

「成功」指出呼叫成功或失敗。 這是必要欄位。 未明確設定為 false 時,要求會視為成功。 如果例外狀況或傳回的錯誤結果碼中斷作業,請將此值設定為 false

針對 Web 應用程式,當回應碼小於 400 或等於 401 時,Application Insights 會將要求定義為成功。 不過有可能會發生這個預設對應與應用程式的語意不相符的情況。

回應碼 404 可能表示「沒有記錄」,這可能是一般流程的一部分。 這也可能表示中斷的連結。 針對中斷連結,您可以實作更進階的邏輯。 只有當中斷的連結藉由分析 URL 查閱者位於相同網站時,您才可以將這些連結標示為失敗。 從公司的行動應用程式存取這些連結時,您也可以將這些連結標示為失敗。 同樣地,從不支援重新導向的用戶端存取時,301302 會表示失敗。

部分接受的內容 206 可能表示整體要求失敗。 例如,Application Insights 端點可能會接收一批遙測項目做為單一要求。 批次中的某些項目未處理成功時,這會傳回 206206 的速率遞增表示有需要調查的問題。 類似的邏輯也適用於 207 多狀態,其中成功可能是不同回應代碼的最差狀況。

自訂屬性

自訂屬性的名稱/值集合:此集合可用來擴充自訂維度的標準遙測。 產生了遙測或遙測項目特有屬性 (例如訂單編號) 的部署位置就是範例。

  • 金鑰長度上限:150
  • 值長度上限:8,192

自訂度量

自訂度量的集合:使用此集合以報告與遙測項目相關聯的具名度量。 一般使用案例如下:

  • 相依性遙測承載大小。
  • 要求遙測所處理的佇列項目數。
  • 客戶完成精靈步驟完成事件遙測的時間。

您可以在應用程式分析中查詢自訂度量︰

customEvents
| where customMeasurements != ""
| summarize avg(todouble(customMeasurements["Completion Time"]) * itemCount)

注意

  • 自訂度量會與其所屬的遙測項目相關聯。 系統會使用包含這些自訂度量的遙測項目來進行取樣。 若要追蹤其值獨立於其他遙測類型的度量,請使用計量遙測
  • 請勿對自訂度量使用字串值。 僅支援數值。

金鑰長度上限:150

Dependency

相依性遙測 (在 Application Insights 中) 代表受監視元件與遠端元件 (例如 SQL 或 HTTP 端點) 的互動。

名稱

此欄位是使用此相依性呼叫起始的命令所用的名稱。 這有低基數值。 範例為預存程序名稱和 URL 路徑範本。

識別碼

識別碼是相依性呼叫執行個體的識別碼。 這用來與此相依性呼叫的對應要求遙測項目相互關聯。 如需詳細資訊,請參閱 Application Insights 中的遙測相互關聯

資料

此欄位是此相依性呼叫所起始的命令。 範例為搭配所有查詢參數的 SQL 陳述式和 HTTP URL。

類型

此欄位是相依性類型名稱。 這有相依性邏輯群組和其他欄位 (如 commandNameresultCode) 解譯的基數值較低。 範例為 SQL、Azure 資料表和 HTTP。

Target

此欄位是相依性呼叫的目標網站。 例如伺服器名稱和主機位址。 如需詳細資訊,請參閱 Application Insights 中的遙測相互關聯

期間

要求持續時間的格式為 DD.HH:MM:SS.MMMMMM。 這必須小於 1000 天。

結果碼

此欄位是相依性呼叫的結果碼。 範例為 SQL 錯誤碼與 HTTP 狀態碼。

成功

此欄位表示成功或失敗的呼叫。

自訂屬性

自訂屬性的名稱/值集合:此集合可用來擴充自訂維度的標準遙測。 產生了遙測或遙測項目特有屬性 (例如訂單編號) 的部署位置就是範例。

  • 金鑰長度上限:150
  • 值長度上限:8,192

自訂度量

自訂度量的集合:使用此集合以報告與遙測項目相關聯的具名度量。 一般使用案例如下:

  • 相依性遙測承載大小。
  • 要求遙測所處理的佇列項目數。
  • 客戶完成精靈步驟完成事件遙測的時間。

您可以在應用程式分析中查詢自訂度量︰

customEvents
| where customMeasurements != ""
| summarize avg(todouble(customMeasurements["Completion Time"]) * itemCount)

注意

  • 自訂度量會與其所屬的遙測項目相關聯。 系統會使用包含這些自訂度量的遙測項目來進行取樣。 若要追蹤其值獨立於其他遙測類型的度量,請使用計量遙測
  • 請勿對自訂度量使用字串值。 僅支援數值。

金鑰長度上限:150

例外狀況

Application Insights 中,例外狀況的執行個體代表受監視應用程式執行期間所發生的已處理或未處理例外狀況。

問題識別碼

問題識別碼會識別例外狀況在程式碼中擲回的位置。 這用於例外狀況群組。 這通常是例外狀況類型和呼叫堆疊中的函式兩者的組合。

長度上限:1,024 個字元

嚴重性等級

此欄位是追蹤嚴重性層級。 值可以是 VerboseInformationWarningErrorCritical

例外狀況詳細資料

(等候進一步擴充)

自訂屬性

自訂屬性的名稱/值集合:此集合可用來擴充自訂維度的標準遙測。 產生了遙測或遙測項目特有屬性 (例如訂單編號) 的部署位置就是範例。

  • 金鑰長度上限:150
  • 值長度上限:8,192

自訂度量

自訂度量的集合:使用此集合以報告與遙測項目相關聯的具名度量。 一般使用案例如下:

  • 相依性遙測承載大小。
  • 要求遙測所處理的佇列項目數。
  • 客戶完成精靈步驟完成事件遙測的時間。

您可以在應用程式分析中查詢自訂度量︰

customEvents
| where customMeasurements != ""
| summarize avg(todouble(customMeasurements["Completion Time"]) * itemCount)

注意

  • 自訂度量會與其所屬的遙測項目相關聯。 系統會使用包含這些自訂度量的遙測項目來進行取樣。 若要追蹤其值獨立於其他遙測類型的度量,請使用計量遙測
  • 請勿對自訂度量使用字串值。 僅支援數值。

金鑰長度上限:150

追蹤

追蹤遙測 (在 Application Insights 中) 代表以文字搜尋的 printf 樣式追蹤陳述式。 Log4NetNLog和其他以文字為基礎的記錄檔項目會轉譯成此類型的執行個體。 追蹤沒有做為擴充性的度量。

訊息

追蹤訊息。

長度上限:32,768 個字元

嚴重性等級

追蹤嚴重性層級。

值:VerboseInformationWarningErrorCritical

自訂屬性

自訂屬性的名稱/值集合:此集合可用來擴充自訂維度的標準遙測。 產生了遙測或遙測項目特有屬性 (例如訂單編號) 的部署位置就是範例。

  • 金鑰長度上限:150
  • 值長度上限:8,192

Event

您可以建立事件遙測項目 (在 Application Insights 中) 來代表發生在您應用程式中的事件。 通常這是與使用者互動的事件,例如按一下按鈕或簽出訂單。 這也可以是初始化或設定更新等應用程式生命週期事件。

事件在語意上不一定會與要求相互關聯。 如果使用得當,事件遙測比要求或追蹤更重要。 事件代表商務遙測,且應該會受到個別、較不積極取樣所影響。

名稱

事件名稱:若要有適當的分組與實用的計量,請限制應用程式,使其產生少量的個別事件名稱。 例如,針對每個產生的事件執行個體,不要使用不同的名稱。

長度上限:512 個字元

自訂屬性

自訂屬性的名稱/值集合:此集合可用來擴充自訂維度的標準遙測。 產生了遙測或遙測項目特有屬性 (例如訂單編號) 的部署位置就是範例。

  • 金鑰長度上限:150
  • 值長度上限:8,192

自訂度量

自訂度量的集合:使用此集合以報告與遙測項目相關聯的具名度量。 一般使用案例如下:

  • 相依性遙測承載大小。
  • 要求遙測所處理的佇列項目數。
  • 客戶完成精靈步驟完成事件遙測的時間。

您可以在應用程式分析中查詢自訂度量︰

customEvents
| where customMeasurements != ""
| summarize avg(todouble(customMeasurements["Completion Time"]) * itemCount)

注意

  • 自訂度量會與其所屬的遙測項目相關聯。 系統會使用包含這些自訂度量的遙測項目來進行取樣。 若要追蹤其值獨立於其他遙測類型的度量,請使用計量遙測
  • 請勿對自訂度量使用字串值。 僅支援數值。

金鑰長度上限:150

計量

Application Insights 支援兩種類型的計量遙測:單一度量和預先彙總的計量。 單一度量只有名稱與值。 預先彙總的計量會指定彙總間隔中計量的最小值和最大值及其標準差。

預先彙總的計量遙測會假設該彙總期間為一分鐘。

Application Insights 支援數個已知的計量名稱。 這些計量會放在 performanceCounters 資料表中。

下表顯示代表系統和流程計數器的計量。

.NET 名稱 平台無從驗證的名稱 描述
\Processor(_Total)\% Processor Time 進行中... 電腦 CPU 總數。
\Memory\Available Bytes 進行中... 顯示在電腦上執行的程序可用的實體記憶體數量 (以位元組為單位)。 其計算方式為加總填零、可用和待命記憶體清單上的空間數量。 可用記憶體可供立即使用。 填零記憶體由填滿零的記憶體分頁所組成,以免後續程序看見前一個程序所用的資料。 待命記憶體是已從程序的工作集 (其實體記憶體) 移除並傳送到磁碟,但仍可供使用回收的記憶體。 請參閱記憶體物件
\Process(??APP_WIN32_PROC??)\% Processor Time 進行中... 裝載應用程式的處理序所在的 CPU。
\Process(??APP_WIN32_PROC??)\Private Bytes 進行中... 裝載應用程式的處理序所使用的記憶體。
\Process(??APP_WIN32_PROC??)\IO Data Bytes/sec 進行中... 裝載應用程式的處理序執行的 I/O 作業速率。
\ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec 進行中... 應用程式處理要求的速率。
\.NET CLR Exceptions(??APP_CLR_PROC??)\# of Exceps Thrown / sec 進行中... 應用程式擲回例外狀況的速率。
\ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time 進行中... 平均要求執行時間。
\ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue 進行中... 佇列中等候處理的要求數目。

如需計量 REST API 的詳細資訊,請參閱計量 - 取得

名稱

此欄位是您想要在 Application Insights 入口網站和 UI 中看到的計量名稱。

此欄位是度量的單一值。 這是個別彙總度量的總和。

計數

此欄位是彙總計量的計量權數。 這不應該為度量設定。

Min

此欄位是彙總計量的最小值。 這不應該為度量設定。

最大值

此欄位是彙總計量的最大值。 這不應該為度量設定。

標準差

此欄位是彙總計量的標準差。 這不應該為度量設定。

自訂屬性

將自訂屬性 CustomPerfCounter 設為 true 的計量,會顯示出該計量代表 Windows 效能計數器。 這些計量會放在 performanceCounters 資料表中,而不會放在 customMetrics 中。 另外也會剖析此計量名稱,以擷取分類、計數器,以及執行個體名稱。

自訂屬性的名稱/值集合:此集合可用來擴充自訂維度的標準遙測。 產生了遙測或遙測項目特有屬性 (例如訂單編號) 的部署位置就是範例。

  • 金鑰長度上限:150
  • 值長度上限:8,192

PageView

應用程式使用者開啟監視應用程式的新分頁時,會在 Application Insights 中記錄 PageView 遙測。 此內容中的 Page 是邏輯單元,該邏輯單元是由開發人員定義成應用程式索引標籤或畫面,而不一定與瀏覽器網頁負載或重新整理動作相互關聯。 您可以在單頁應用程式 (SPA) 的內容中進一步了解此區別,其中分頁之間的切換不會繫結至瀏覽器分頁動作。 pageViews.duration 是應用程式向使用者呈現分頁的時間。

注意

  • 根據預設,Application Insights SDK 會記錄每個瀏覽器網頁載入動作上的單一 PageView 事件,其中 pageViews.duration 已填入瀏覽器計時。 開發人員可以藉由使用 trackPageView API 呼叫來擴充 PageView 事件的其他追蹤。
  • 預設記錄保留為 30 天。 如果您想要在較長時間內檢視 PageView 統計資料,您必須調整設定。

在 Application Insights 中測量 browserTiming

新式瀏覽器使用效能 API 公開分頁載入動作的度量。 Application Insights 藉由將相關時間合併至這些處理時間定義所定義的標準瀏覽器計量,以簡化這些度量:

  • 用戶端 <--> DNS:用戶端會連接至 DNS 以解析網站主機名稱,DNS 會回應 IP 位址。

  • 用戶端 <--> Web 伺服器:用戶端會建立 TCP,然後與 Web 伺服器進行 TLS 交握。

  • 用戶端 <--> Web 伺服器:用戶端會傳送要求承載,等待伺服器執行要求,並接收第一個回應封包。

  • 用戶端 <--Web 伺服器:用戶端會接收來自 Web 伺服器的其餘回應承載位元組。

  • 用戶端:用戶端現在具有完整的回應承載,而且必須轉譯內容至瀏覽器,並載入 DOM。

  • browserTimings/networkDuration = #1 + #2

  • browserTimings/sendDuration = #3

  • browserTimings/receiveDuration = #4

  • browserTimings/processingDuration = #5

  • browsertimings/totalDuration = #1 + #2 + #3 + #4 + #5

  • pageViews/duration

Screenshot that shows the Metrics page in Application Insights showing graphic displays of metrics data for a web application.

上下文

每個遙測項目都可能具有強型別的內容欄位。 每個欄位都具有特定的監視案例。 請使用自訂屬性集合來儲存自訂或應用程式特定的內容資訊。

應用程式版本

應用程式內容欄位中一律是與傳送遙測的應用程式相關的資訊。 應用程式版本可用於分析應用程式行為及其與部署相互關聯中的趨勢變更。

最大長度:1,024

用戶端 IP 位址

此欄位是用戶端裝置的 IP 位址。 可支援 IPv4 和 IPv6。 從服務傳送遙測時,位置內容與服務中起始作業的使用者相關。 Application Insights 會從用戶端 IP 擷取地理位置資訊並予以截斷。 因此用戶端 IP 本身無法作為使用者識別資訊。

最大長度:46

裝置類型:

原本此欄位是用於表示應用程式使用者正在使用的裝置類型。 目前主要用於區別裝置類型為「Browser」的 JavaScript 遙測與裝置類型為「PC」的伺服器端遙測。

最大長度:64

作業識別碼

此欄位是根作業的唯一識別碼。 此識別碼允許群組遙測跨越多個元件。 如需詳細資訊,請參閱遙測相互關聯。 要求或頁面檢視會建立作業識別碼。 所有其他遙測會將此欄位設定為包含要求或頁面檢視的值。

最大長度:128

父作業識別碼

此欄位是遙測項目直屬父代的唯一識別碼。 如需詳細資訊,請參閱遙測相互關聯

最大長度:128

作業名稱

此欄位是作業的名稱 (群組)。 要求或頁面檢視會建立作業名稱。 所有其他遙測項目會將此欄位設定為包含要求或頁面檢視的值。 作業名稱可用於尋找作業群組的全部遙測項目 (例如 GET Home/Index)。 此內容屬性可用於回答「此頁面擲回的一般例外狀況為何?」等問題。

最大長度:1,024

作業的綜合來源

此欄位是綜合來源的名稱。 來自可能代表綜合流量的應用程式之中的一些遙測。 這可能是來自 Application Insights SDK 本身等診斷程式庫並編製網站索引的網頁編目程式、網站可用性測試或追蹤。

最大長度:1,024

工作階段識別碼

工作階段識別碼是與應用程式進行使用者互動的執行個體。 工作階段內容欄位中一律是與使用者相關的資訊。 從服務傳送遙測時,工作階段內容與服務中起始作業的使用者相關。

最大長度:64

匿名使用者識別碼

匿名使用者識別碼 (User.Id) 代表應用程式的終端使用者。 從服務傳送遙測時,使用者內容與服務中起始作業的使用者相關。

取樣是將收集的遙測量降到最低的其中一個方法。 取樣演算法會嘗試取樣輸入或輸出全部相互關聯的遙測。 匿名使用者識別碼用於產生取樣分數,因此匿名使用者識別碼應該為足夠隨機的值。

注意

匿名使用者識別碼的計數與唯一應用程式使用者的數目不同。 匿名使用者識別碼的計數通常較高,因為每次使用者在不同的裝置或瀏覽器上開啟您的應用程式,或清除瀏覽器 Cookie 時,都會配置新的唯一匿名使用者識別碼。 此計算可能會導致將相同的實體使用者計數多次。

使用者識別碼可以與工作階段識別碼交叉參考,以提供唯一的遙測維度,並在工作階段期間建立使用者活動。

使用匿名使用者識別碼儲存使用者名稱是濫用欄位的做法。 使用已驗證的使用者識別碼。

最大長度:128

已驗證的使用者識別碼

已驗證的使用者識別碼與匿名使用者識別碼相反。 此欄位代表名稱易記的使用者。 根據預設,只會使用 ASP.NET Framework SDK 的 AuthenticatedUserIdTelemetryInitializer 收集此識別碼。

使用 Application Insights SDK,搭配在瀏覽器和裝置之間持續識別使用者的值,初始化已驗證的使用者識別碼。 如此一來,所有遙測項目都會屬於該唯一識別碼。 此識別碼可讓您查詢特定使用者收集的所有遙測 (受限於取樣設定遙測篩選)。

使用者識別碼可以與工作階段識別碼交叉參考,以提供唯一的遙測維度,並在工作階段期間建立使用者活動。

最大長度:1,024

帳戶識別碼

在多租用戶應用程式中,帳戶識別碼是使用者行動所依據的租用戶帳戶識別碼或名稱。 使用者識別碼和已驗證的使用者識別碼不足時,其會用於更多的使用者分割。 例如,Azure 入口網站的訂用帳戶識別碼或部落格平台的部落格名稱。

最大長度:1,024

雲端角色

此欄位是應用程式所屬角色的名稱。 這在 Azure 中直接對應於角色名稱。 您也可以將其用於區別微服務,這是單一應用程式的一部分。

最大長度:256

雲端角色執行個體

此欄位是執行應用程式的執行個體名稱。 例如,這是內部部署的電腦名稱或 Azure 的執行個體名稱。

最大長度:256

內部:SDK 版本

如需詳細資訊,請參閱 SDK 版本

最大長度:64

內部:節點名稱

此欄位代表用於計費的節點名稱。 您可以將其用於覆寫節點的標準偵測。

最大長度:256

常見問題集

本節提供常見問題的答案。

如何測量監視活動的影響?

PageView 遙測包含 URL,您可以使用 Kusto 中的 regex 函式剖析 UTM 參數。

如果使用者或企業停用瀏覽器設定中的傳送使用者代理程式,則偶爾會遺失或不正確的資料。 UA 剖析器 regex 可能不包含全部裝置資訊。 或者,Application Insights 可能尚未採用最新的更新。

自訂度量成功,並未發生錯誤,為什麼記錄檔不會顯示?

如果您使用字串值,就會發生這種情況。 只有數值能與自訂度量搭配使用。

下一步

了解如何使用自訂事件和計量的 Application Insights API,其中包括:

設定下列項目的相依性追蹤:

若要深入了解: