針對啟用 Application Insights 快照調試程式或檢視快照集的問題進行疑難解答

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

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

不支援的案例

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

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

請確定您使用的是適當的快照調試程式端點

目前唯一需要修改端點的區域是 Azure GovernmentAzure 中國

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

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

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

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

Property 美國政府雲端 中國雲端
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
  • TEMP

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

如果複製失敗,快照集收集器會報告 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 意應見反社群