針對啟用 Application Insights 快照偵錯工具或檢視快照集的問題進行疑難排解

如果您已為應用程式啟用 Application Insights 快照偵錯工具,但未看到例外狀況的快照集,您可以使用這些指示進行疑難排解。

產生快照集的原因可能有很多種。 首先,您可以執行快照集健康情況檢查來識別一些可能的常見原因。

不支援的案例

您可以在下方找到快照集收集器不受支援的案例:

案例 副作用 建議
在應用程式中直接使用快照集收集器 SDK 時,請直接 (.csproj) ,而且您已啟用進階選項 「Interop」。 包括快照集收集器遙測) 的本機 Application Insights SDK (將會遺失,因此將無法使用快照集。
您的應用程式可能會在啟動時當機 System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
如需 Application Insights 功能 「Interop」 的詳細資訊,請參閱 檔。
如果您使用進階選項 「Interop」,請使用無程式碼快照集收集器插入 (透過 Azure 入口網站 UX)

請確定您使用的是適當的快照偵錯工具端點

目前唯一需要修改端點的區域是Azure Government和 Azure China

針對使用 Application Insights SDK 的App Service和應用程式,您必須使用快照偵錯工具的支援覆寫來更新連接字串,如下所定義:

連接字串屬性 美國政府雲端 中國雲端
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

如需其他連線覆寫的詳細資訊,請參閱 Application Insights 檔

針對函式應用程式,您必須使用下列支援的覆寫來更新 host.json

屬性 美國政府雲端 中國雲端
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

以下是使用美國政府雲端代理程式端點更新的 host.json 範例:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

使用快照集健康情況檢查

有數個常見的問題會導致開啟偵錯快照集未顯示。 例如,使用過期的快照集收集器;達到每日上傳限制;或者,快照集可能需要很長的時間才能上傳。 使用快照集健康情況檢查來針對常見問題進行疑難排解。

端對端追蹤檢視的例外狀況窗格中有一個連結會帶您前往快照集健康情況檢查。

顯示如何輸入快照集健康情況檢查的螢幕擷取畫面。

互動式、類似聊天的介面會尋找常見問題,並引導您修正這些問題。

顯示互動式健康情況檢查視窗的螢幕擷取畫面,其中列出問題和如何修正這些問題的建議。

如果無法解決問題,請參閱下列手動疑難排解步驟。

確認檢測金鑰

請確定您在已發佈的應用程式中使用正確的檢測金鑰。 通常會從 ApplicationInsights.config 檔讀取檢測金鑰。 確認值與您在入口網站中看到的 Application Insights 資源檢測金鑰相同。

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

檢查 TLS/SSL 用戶端設定 (ASP.NET)

如果您的 ASP.NET 應用程式裝載于Azure App 服務或虛擬機器上的 IIS 中,您的應用程式可能會因為遺失 SSL 安全性通訊協定而無法連線到快照偵錯工具服務。

快照偵錯工具端點需要 TLS 1.2 版。 SSL 安全性通訊協定集是 區段中的 system.web 值所 httpRuntime targetFramework 啟用的 web.config 其中一個選項。 httpRuntime targetFramework如果 為 4.5.2 或更低版本,則預設不會包含 TLS 1.2。

注意事項

httpRuntime targetFramework 值與建置應用程式時所使用的目標架構無關。

若要檢查設定,請開啟 您的web.config 檔案,並尋找 system.web 區段。 請確定 的 targetFrameworkhttpRuntime 設定為 4.6 或更新版本。

<system.web>
   ...
   <httpRuntime targetFramework="4.7.2" />
   ...
</system.web>

注意事項

修改值會 httpRuntime targetFramework 變更套用至應用程式的執行時間回想,並可能導致其他細微的行為變更。 進行這項變更之後,請務必徹底測試您的應用程式。 如需相容性變更的完整清單,請參閱 重新設定變更的目標

注意事項

targetFramework如果 是 4.7 或更新版本,則 Windows 會決定可用的通訊協定。 在Azure App 服務中,TLS 1.2 可供使用。 不過,如果您使用自己的虛擬機器,您可能需要在作業系統中啟用 TLS 1.2。

.NET Core 的預覽版本

如果您使用預覽版的 .NET Core,或您的應用程式直接或間接透過相依元件參考 Application Insights SDK,請遵循 針對其他環境啟用快照偵錯工具的指示。

檢查診斷服務網站擴充功能的狀態頁面

如果已透過入口網站中的 [ Application Insights] 窗格 啟用快照偵錯工具,則已由診斷服務網站延伸模組啟用。

注意事項

Application Insights 快照偵錯工具的無程式碼安裝遵循 .NET Core 支援原則。 如需支援執行時間的詳細資訊,請參閱 .NET Core 支援原則

您可以前往下列 URL 來檢查此擴充功能的狀態頁面: https://{site-name}.scm.azurewebsites.net/DiagnosticServices

注意事項

[狀態頁面] 連結的網域會根據雲端而有所不同。 此網域會與適用于 App Service 的 Kudu 管理網站相同。

此狀態頁面會顯示 Profiler 和快照集收集器代理程式的安裝狀態。 如果發生非預期的錯誤,將會顯示它,並示範如何修正它。

您可以使用適用于 App Service 的 Kudu 管理網站來取得此狀態頁面的基底 URL:

  1. 在Azure 入口網站中開啟App Service應用程式。
  2. 選取 [進階工具],或搜尋 Kudu
  3. 選取「移至」
  4. 當您位於 Kudu 管理網站之後,請在 URL 中 附加下列內容 /DiagnosticServices ,然後按 Enter 鍵。 其結尾會像這樣: https://<kudu-url>/DiagnosticServices

升級至最新版的 NuGet 套件

根據快照偵錯工具的啟用方式,請參閱下列選項:

如需最新的更新和錯誤修正, 請參閱版本資訊

檢查上傳程式記錄

建立快照集之後,系統會在磁片上建立 (.dmp) 的小型傾印檔案。 個別的上傳程式程式會建立該小型傾印檔案,並將其連同任何相關聯的 PDB 上傳至 Application Insights 快照偵錯工具儲存體。 成功上傳小型傾印之後,就會從磁片中刪除它。 上傳程式程式的記錄檔會保留在磁片上。 在App Service環境中,您可以在 中 D:\Home\LogFiles 找到這些記錄。 使用適用于 App Service 的 Kudu 管理網站來尋找這些記錄檔。

  1. 在Azure 入口網站中開啟App Service應用程式。
  2. 選取 [進階工具],或搜尋 Kudu
  3. 選取「移至」
  4. 在 [ 偵錯主控台 ] 下拉式清單中,選取 [CMD]
  5. 選取 [LogFiles]

您應該會看到至少一個名稱開頭為 Uploader_SnapshotUploader_ 的檔案,以及擴展 .log 名。 選取適當的圖示以下載任何記錄檔,或在瀏覽器中開啟記錄檔。 檔案名包含可識別App Service實例的唯一尾碼。 如果您的App Service實例裝載于一部以上的電腦上,則每部電腦會有個別的記錄檔。 當上傳程式偵測到新的小型傾印檔案時,它會記錄在記錄檔中。 以下是成功快照集和上傳的範例:

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
    DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
    DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

注意事項

上述範例來自 NuGet 套件 1.2.0 Microsoft.ApplicationInsights.SnapshotCollector 版。 在舊版中,會呼叫 MinidumpUploader.exe 上傳程式程式,且記錄檔較不詳細。

在上述範例中,檢測金鑰是 c12a605e73c44346a984e00000000000 。 此值應該符合應用程式的檢測金鑰。 小型傾印與識別碼為 的快照 139e411a23934dc0b9ea08a626db16c5 集相關聯。 您稍後可以使用此識別碼,在 Application Insights 分析中找出相關聯的例外狀況記錄。

上傳程式大約每隔 15 分鐘掃描一次新的 PDB。 以下為範例:

SnapshotUploader.exe Information: 0 : PDB rescan requested.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
    DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

對於裝載于 App Service 中的應用程式,上傳程式記錄檔會位於與小型傾印相同的資料夾中: %TEMP%\Dumps\<ikey> (其中 <ikey> 是您的檢測金鑰) 。

疑難排解雲端服務

在雲端服務中,預設暫存資料夾可能太小而無法保存小型傾印檔案,導致快照集遺失。

所需的空間取決於應用程式的總工作集和並行快照集的數目。

32 位 ASP.NET Web 角色的工作集通常介於 200 MB 到 500 MB 之間。 允許至少兩個並行快照集。

例如,如果您的應用程式使用 1 GB 的總工作集,您應該確定至少有 2 GB 的磁碟空間可儲存快照集。

請遵循下列步驟,使用快照集的專用本機資源來設定雲端服務角色。

  1. 編輯雲端服務定義 (.csdef) 檔案,將新的本機資源新增至您的雲端服務。 下列範例會定義名為 且 SnapshotStore 大小為 5 GB 的資源。

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. 修改您角色的啟動程式碼,以新增指向 SnapshotStore 本機資源的環境變數。 針對背景工作角色,應該將程式碼新增至您角色的 OnStart 方法:

    public override bool OnStart()
    {
        Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
        return base.OnStart();
    }
    

    針對 Web 角色 (ASP.NET) ,應將程式碼新增至 Web 應用程式的 Application_Start 方法:

    using Microsoft.WindowsAzure.ServiceRuntime;
    using System;
    
    namespace MyWebRoleApp
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
           protected void Application_Start()
           {
              Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
              // TODO: The rest of your application startup code
           }
        }
    }
    
  3. 更新您角色的 ApplicationInsights.config 檔案,以覆寫 所使用的暫存資料夾位置 SnapshotCollector

    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
       <!-- Use the SnapshotStore local resource for snapshots -->
       <TempFolder>%SNAPSHOTSTORE%</TempFolder>
       <!-- Other SnapshotCollector configuration options -->
     </Add>
    </TelemetryProcessors>
    

覆寫陰影複製資料夾

當快照集收集器啟動時,它會嘗試在磁片上尋找適合執行快照集上傳程式程式的資料夾。 選擇的資料夾稱為陰影複製資料夾。

快照集收集器會檢查一些已知的位置,確定它具有複製快照集上傳程式二進位檔的許可權。 使用下列環境變數:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • 臨時

如果找不到適當的資料夾,快照集收集器會報告錯誤 訊息:「找不到適合的陰影複製資料夾」。

如果複製失敗,快照集收集器會報告 ShadowCopyFailed 錯誤。

如果無法啟動上傳程式,快照集收集器會報告 UploaderCannotStartFromShadowCopy 錯誤。 訊息的本文通常包含 System.UnauthorizedAccessException 。 此錯誤通常會發生,因為應用程式是在許可權降低的帳戶下執行。 帳戶具有寫入陰影複製資料夾的許可權,但它沒有執行程式碼的許可權。

由於這些錯誤通常會在啟動期間發生,因此通常會接著錯誤 ExceptionDuringConnect ,指出 上傳程式無法啟動。」

若要解決這些錯誤,您可以透過 ShadowCopyFolder 組態選項手動指定陰影複製資料夾。 例如,使用 ApplicationInsights.config

<TelemetryProcessors>
 <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
   <!-- Override the default shadow copy folder. -->
   <ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
   <!-- Other SnapshotCollector configuration options -->
 </Add>
</TelemetryProcessors>

或者,如果您使用 appsettings.json 搭配 .NET Core 應用程式:

{
  "ApplicationInsights": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

使用 Application Insights 搜尋來尋找快照集的例外狀況

建立快照集時,擲回例外狀況會以快照集識別碼標記。 當例外狀況回報給 Application Insights 時,該快照集識別碼會包含為自訂屬性。 使用 Application Insights 中的搜尋,您可以找到具有自訂屬性的所有記錄 ai.snapshot.id

  1. 流覽至 Azure 入口網站中的 Application Insights 資源。
  2. 選取 [搜尋]
  3. ai.snapshot.id [搜尋] 文字方塊中輸入 ,然後按 Enter。

顯示在入口網站中使用快照集識別碼搜尋遙測的螢幕擷取畫面。

如果此搜尋未傳回任何結果,則不會在選取的時間範圍內將快照集回報給 Application Insights。

若要從上傳程式記錄中搜尋特定快照集識別碼,請在 [搜尋] 方塊中輸入該識別碼。 如果您找不到您知道已上傳之快照集的記錄,請遵循下列步驟:

  1. 藉由驗證檢測金鑰,再次確認您正在查看正確的 Application Insights 資源。

  2. 使用上傳程式記錄中的時間戳記,調整搜尋的時間範圍篩選以涵蓋該時間範圍。

如果您仍然看不到該快照集識別碼的例外狀況,則例外狀況記錄不會回報給 Application Insights。 如果您的應用程式在擷取快照集之後,但在回報例外狀況記錄之前當機,就會發生這種情況。 在此情況下,請檢查 底下的 Diagnose and solve problems App Service記錄,以查看是否有未預期的重新開機或未處理的例外狀況。

編輯網路 Proxy 或防火牆規則

如果您的應用程式透過 Proxy 或防火牆連線到網際網路,您可能需要更新規則以與快照偵錯工具服務通訊。

Application Insights 快照偵錯工具所使用的 IP 會包含在 Azure 監視器服務標籤中。 如需詳細資訊,請參閱 服務標籤檔

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 社群支援