Application Insights 會從您的應用程式收集遙測,以協助診斷失敗並調查緩慢的交易。 其中包含四個基本工具:
失敗 - 追蹤錯誤、例外狀況和錯誤,提供快速解決問題和增強穩定性的深入解析。
效能 - 藉由顯示回應時間和作業計數,快速識別並協助解決應用程式瓶頸。
交易搜尋 - 可讓使用者尋找和檢查個別的遙測專案,例如頁面檢視、例外狀況和自定義事件。
交易診斷 - 透過全面深入解析端對端交易詳細數據,協助快速識別元件中的問題。
這些工具一起可確保 Web 應用程式的持續健康情況和效率。 您可以使用它們來找出對用戶影響最大的問題或增強功能。
若要移至 Application Insights 中的 [失敗] 檢視,請選取 [概觀] 窗格上的 [失敗要求] 圖表,或資源功能表中 [調查] 類別下的 [失敗]。
您也可以從應用程式對應進入失敗檢視,方法是選取資源,然後在分流區段點擊調查失敗。
備註
您可以透過其他三種體驗中的任何一項來存取 交易診斷 。 如需詳細資訊,請參閱 調查遙測。
概觀
備註
除了 Azure 監視器 OpenTelemetry Distro 或 JavaScript SDK 所傳送的現成遙測之外,您還可以新增和修改遙測(例如自定義事件)。
如需詳細資訊,請參閱 新增和修改適用於 .NET、Java、Node.js和 Python 應用程式的 Azure 監視器 OpenTelemetry。
篩選遙測
預設篩選
所有體驗都可讓您依時間範圍篩選遙測。 此外,每個體驗都會隨附自己的默認篩選:
您可以從 [ 角色篩選] 選單選取要檢視的服務(雲端角色名稱)或計算機/容器(雲端角色實例)。 這可讓您隔離應用程式特定部分內的問題或效能趨勢。
若要瞭解如何設定雲端角色名稱和雲端角色實例,請參閱設定 Azure 監視器 OpenTelemetry。
新增篩選
您可以依屬性的值篩選事件。 可用的屬性取決於您選取的事件或遙測類型。 若要新增篩選:
選取
以新增篩選。
從左側下拉式清單中,選取屬性。
從中央下拉式清單中,選取下列其中一個運算符:
=
、!=
、contains
或not contains
。從右下拉式清單中,選取您想要篩選的所有屬性值。
備註
篩選器值右側的計數顯示目前篩選的集合中有多少個出現次數。
若要新增另一個篩選,請再次選取
。
搜尋遙測
使用分析數據
Application Insights 收集的所有數據都會儲存在 Log Analytics 中,其提供豐富的查詢語言來分析您正在調查之例外狀況所產生的要求。
小提示
Log Analytics 中的簡單模式提供直覺式的點選介面,用於分析和可視化記錄數據。
調查遙測
若要調查錯誤或例外狀況的根本原因,您可以鑽研有問題的作業,以取得包含相依性和例外狀況詳細數據的詳細端對端交易詳細數據檢視。
分析用戶端效能和失敗
如果您使用 Application Insights 檢測網頁,您可以深入瞭解頁面檢視、瀏覽器作業和相依性。 收集此瀏覽器數據需要 將腳本新增至網頁。
新增腳本之後,您可以選取 [效能] 或 [失敗] 檢視上的 [瀏覽器] 切換,以存取頁面檢視及其相關聯的效能計量。
此檢視會從瀏覽器的觀點,提供應用程式各種遙測的可視化摘要。
針對瀏覽器作業, 端對端交易詳細 數據檢視會顯示要求頁面之用戶端的頁面 檢視屬性 ,包括瀏覽器的類型及其位置。 這項資訊有助於判斷是否有與特定類型用戶端相關的效能問題。
備註
與針對伺服器效能收集的數據一樣,Application Insights 會使用記錄讓所有客戶端數據可供深入分析。
交易診斷體驗
交易診斷體驗也稱為端對端交易詳細數據檢視,會顯示交易的甘特圖,其中會列出具有其持續時間和回應碼的所有事件。
此診斷體驗會自動將來自所有 Application Insights 受監視元件的伺服器端遙測相互關聯到單一檢視,並支援多個資源。 Application Insights 能偵測基礎關聯性,讓您輕鬆診斷出導致交易緩慢或失敗的應用程式元件、相依性或例外狀況。
選取特定事件會顯示其屬性,包括基礎命令或呼叫堆棧等其他資訊。
此檢視有四個主要部分:
這個可摺疊的窗格會顯示符合篩選準則的其他結果。 選取任何結果,即可更新先前三個區段的個別詳細資料。 我們試著找出最可能具有所有元件可用詳細資料的範例 (即使任何一個已有生效的取樣功能)。 這些範例會顯示為建議。
.NET Profiler 和快照偵錯器
.NET Profiler 或 快照調試程式 可協助針對效能和失敗問題進行程式碼層級診斷。 透過這項體驗,只須選取單一項目,您就可以查看任何元件的分析工具追蹤或快照集。
性能分析器追蹤
.NET Profiler 可藉由顯示針對作業執行的實際程序代碼,以及每個步驟所需的時間,協助進一步進行程式碼層級診斷。 某些操作可能不會被追蹤,因為分析器是定期執行的。 隨著時間的推移,更多的作業應該會有痕跡。
若要啟動 .NET Profiler,請在 [效能 ] 檢視上選取作業,然後移至 [分析工具追蹤]。
或者,您可以在 端對端交易詳細 數據檢視上執行此動作。
追蹤會顯示每個作業的個別事件,讓您可以在整體作業期間診斷根本原因。 選取其中一個持續時間最長的頂端範例。
選取 效能提示 中的連結(在此範例中為 CPU 時間),以取得解譯事件的檔。
如需進一步分析,請選取 [下載追蹤 ] 以下載追蹤。 您可以使用 PerfView 來檢視此資料。
備註
預設會選取熱路徑。 它會將導致您正在調查問題的事件特定路徑突出顯示,這由事件名稱旁的火焰圖示表示。
如果您無法讓 .NET Profiler 運作,請連絡 serviceprofilerhelp@microsoft.com。
偵錯快照
若要查看例外狀況的程式代碼層級偵錯資訊:
選取甘特圖中的例外狀況,然後 選取 [開啟偵錯快照集]。
快照調試程式 會顯示呼叫堆疊,並可讓您檢查每個呼叫堆疊框架的變數。 藉由選取方法,您可以在要求時檢視所有局部變數的值。
之後,您可以下載快照集並在 Visual Studio 中開啟它,以偵錯原始程式碼。
如果無法使用 Visual Studio 快照偵錯工具,請連絡 snapshothelp@microsoft.com。
建立工作項目
如果您將 Application Insights 連線到 Azure DevOps 或 GitHub 等追蹤系統,您可以直接從 Application Insights 使用任何遙測專案的詳細數據來建立工作專案。
備註
當您第一次執行此步驟時,系統會要求您設定與 Azure DevOps 組織和專案的連結。
移至 [ 端對端交易詳細數據 ] 檢視,然後選取事件。
在 [ 詳細數據] 區段中,選取 [ 建立工作專案 ],然後建立新的範本或挑選現有的範本。
[ 新增工作專案 ] 窗格隨即開啟,其中包含已填入例外狀況的詳細數據。 儲存之前,您可以新增更多資訊。
常見問題
本節提供常見問題的解答。
交易搜尋
什麼是元件?
元件是分散式或微服務應用程式中可獨立部署的組件。 開發人員和作業小組可在程式碼層級查看或存取這些應用程式元件所產生的遙測。
- 元件不同於小組或組織可能無法存取 (程式碼或遙測) 的「已觀察」外部相依性,例如 SQL 和事件中樞。
- 元件能在任何數量的伺服器、角色或容器執行個體上執行。
- 元件可以是個別的 Application Insights 檢測金鑰,即使訂閱不同也一樣。 元件也可以是向單一 Application Insights 檢測金鑰報告的不同角色。 新體驗能顯示所有元件的詳細資料,不論設定方式為何。
保留多少數據?
請參閱限制摘要。
如何查看伺服器要求中的 POST 數據?
我們不會自動記錄 POST 資料,但您可以使用 TrackTrace 或記錄呼叫。 將 POST 資料放在訊息參數中。 您無法像篩選屬性一樣來篩選訊息,但大小限制比較長。
為什麼我的 Azure 函式搜尋不會傳回任何結果?
Azure Functions 不會記錄 URL 查詢字串。
交易診斷
為什麼我在圖表上看到單一元件,而其他元件只會顯示為外部相依性,而沒有任何詳細數據?
可能的原因:
- 您是否曾使用 Application Insights 檢測其他元件?
- 使用的是否為最新的穩定版 Application Insights SDK?
- 如果這些元件是個別的 Application Insights 資源,請確認您有存取權。 如果您擁有存取權,而且元件是由最新的 Application Insights SDK 進行檢測,請透過右上角的意見反應管道告訴我們。
我看到相依性的重複數據列。此行為是否預期?
目前,我們會分別顯示輸出相依性呼叫和輸入要求。 這兩項呼叫看起來通常會一樣,唯一的差異在於持續時間值會因網路來回時間而有所不同。 主要圖示和樣式分明的持續時間橫條有助於區分兩者。 用這樣的方法呈現資料是否會混淆? 請提供意見給我們!
不同元件實例之間的時鐘偏差呢?
交易圖表中的時間軸已根據時鐘偏差進行調整。 您可以在 [詳細資料] 窗格中或使用 Analytics 來查看確切的時間戳記。
為什麼新體驗遺漏大部分的相關項目查詢?
這行為是經過設計的。 左側 (上方和下方區段) 已提供全部元件的所有相關項目。 新體驗的左側未涵蓋兩項相關項目:此事件前後五分鐘的所有遙測資料和使用者時間軸。
當我使用 Application Insights JavaScript SDK 時,有沒有辦法減少每筆交易中看到的事件數量?
交易診斷體驗會顯示單一作業中共用作業識別碼的所有遙測。 根據預設,Application Insights SDK for JavaScript 會為每個唯一的頁面檢視建立新作業。 在單頁應用程式 (SPA) 中,只會產生一個頁面檢視事件,且單一作業識別碼將用於產生的所有遙測。 因此,許多事件可能會與相同的作業相互關聯。
在這些情境中,您可以使用「自動路由追蹤」(Automatic Route Tracking) 來在您的 SPA 中自動創建用於導覽的新作業。 您必須開啟 enableAutoRouteTracking ,以便在每次更新 URL 路由時產生頁面檢視(邏輯頁面檢視發生)。 如果您想要手動重新整理作業識別碼,請呼叫 appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId()
。 手動觸發 PageView 事件也會重設作業識別碼。
為什麼交易詳細數據持續時間不會加到最上層要求持續時間?
甘特圖中未說明的時間為追蹤相依性未涵蓋的時間。 此問題可能發生是因為外部呼叫未被自動或手動儀器化。 這也可能是因為時間花在內部處理過程中,而不是由於外部呼叫所導致的。
如果已檢測所有呼叫,則處理中很可能是花費時間的根本原因。 診斷程式的有用工具是 .NET Profiler。
如果我在 Azure 入口網站中流覽 Application Insights 時看到「擷取數據時發生錯誤」訊息,該怎麼辦?
此錯誤表示瀏覽器無法呼叫所需的 API,或 API 傳回失敗回應。 若要針對此行為進行疑難排解:請開啟瀏覽器的 InPrivate 視窗,並停用正在執行的任何瀏覽器延伸模組,然後確認您是否仍然可以重現入口網站行為。 如果入口網站仍會發生錯誤,請嘗試使用其他瀏覽器或其他機器進行測試,並從 API 呼叫會失敗的用戶端機器來調查 DNS 或其他網路相關問題。 如果入口網站錯誤持續發生且需要進一步調查,請在重現非預期的入口網站行為時 收集瀏覽器網路追蹤 ,然後從 Azure 入口網站開啟支援案例。
後續步驟
- 深入了解如何使用應用程式對應來找出應用程式所有元件的效能瓶頸和失敗熱點。
- 深入了解如何使用可用性檢視來設定週期性測試,以監視應用程式的可用性和回應性。
- 瞭解如何 在分析中撰寫複雜的查詢 ,以深入瞭解遙測數據。
- 瞭解如何 將記錄和自定義遙測傳送至 Application Insights ,以取得更全面的監視。
- 如需監視運作時間和回應性的簡介,請參閱 可用性概觀。