Řešení potíží s povolením ladicího programu snímků Application Insights nebo zobrazením snímků

Pokud jste pro svoji aplikaci povolili nástroj Application Insights Snapshot Debugger, ale nezobrazují se snímky výjimek, můžete při řešení potíží použít tyto pokyny.

Může existovat mnoho různých důvodů, proč se snímky negenerují. Můžete začít spuštěním kontroly stavu snímku, abyste identifikovali některé z možných běžných příčin.

Nepodporovaná scénáře

Níže najdete scénáře, ve kterých kolektor snímků není podporovaný:

Scenario Vedlejší účinky Doporučení
Pokud používáte sadu SDK kolektoru snímků přímo ve vaší aplikaci (.csproj) a máte povolenou možnost "Spolupráce". Místní sada Application Insights SDK (včetně telemetrie kolektoru snímků) se ztratí, a proto nebudou k dispozici žádné snímky.
Při spuštění může dojít k chybovému ukončení vaší aplikace. System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Další informace o funkci interoperability Application Insights najdete v dokumentaci.
Pokud používáte předběžnou možnost "Interop", použijte injektáž kolektoru snímků bez kódu (povolená prostřednictvím Azure Portal uživatelského prostředí).

Ujistěte se, že používáte příslušný koncový bod snapshot ladicího programu.

V současné době jsou jedinými oblastmi, které vyžadují úpravy koncových bodů, Azure Government a Microsoft Azure provozovaný společností 21Vianet.

U App Service a aplikací používajících sadu Application Insights SDK musíte připojovací řetězec aktualizovat pomocí podporovaných přepsání pro Snapshot Debugger, jak je definováno níže:

Vlastnost připojovacího řetězce Cloud pro státní správu USA Cloud pro Čínu
Koncový bod snímku https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Další informace o jiných přepsání připojení najdete v dokumentaci k Application Insights.

Pro aplikaci function app musíte aktualizovat host.json pomocí následujících podporovaných přepsání:

Vlastnost Cloud pro státní správu USA Cloud pro Čínu
Koncový bod agenta https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Níže je příklad aktualizovaného koncového host.json bodu agenta cloudu státní správy USA:

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

Použití kontroly stavu snímku

Několik běžných problémů vede k tomu, že se snímek open debug nezobrazuje. Použití zastaralého kolektoru snímků, například; dosažení denního limitu nahrávání; nebo je možné, že nahrání snímku trvá dlouho. Při řešení běžných problémů použijte kontrolu stavu snímku.

V podokně výjimek v zobrazení kompletního trasování je odkaz, který vás přenese na kontrolu stavu snímku.

Snímek obrazovky znázorňující, jak zadat kontrolu stavu snímku

Interaktivní chatovací rozhraní hledá běžné problémy a vede vás k jejich řešení.

Snímek obrazovky s oknem interaktivní kontroly stavu se seznamem problémů a návrhy, jak je opravit

Pokud se tím problém nevyřeší, projděte si následující postup ručního řešení potíží.

Ověření instrumentačního klíče

Ujistěte se, že v publikované aplikaci používáte správný instrumentační klíč. Instrumentační klíč se obvykle načítá ze souboruApplicationInsights.config . Ověřte, že hodnota je stejná jako instrumentační klíč prostředku Application Insights, který vidíte na portálu.

Poznámka

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem instrumentačního klíče bude dál fungovat, ale pro tuto funkci už nebudeme poskytovat aktualizace ani podporu. Přechod na připojovací řetězce , abyste mohli využívat nové možnosti.

Kontrola nastavení klienta TLS/SSL (ASP.NET)

Pokud máte ASP.NET aplikaci, která je hostovaná ve službě Azure App Service nebo ve službě IIS na virtuálním počítači, může se vaší aplikaci nepovést připojení ke službě Snapshot Debugger kvůli chybějícímu protokolu zabezpečení SSL.

Koncový bod ladicího programu snímků vyžaduje protokol TLS verze 1.2. Sada protokolů zabezpečení SSL je jedním z vlastností povolených httpRuntime targetFramework hodnotou v system.web části web.config. httpRuntime targetFramework Pokud je hodnota 4.5.2 nebo nižší, není protokol TLS 1.2 ve výchozím nastavení zahrnutý.

Poznámka

Hodnota httpRuntime targetFramework je nezávislá na cílové architektuře použité při sestavování aplikace. Pokud chcete zkontrolovat nastavení, otevřete soubor web.config a vyhledejte část system.web. Ujistěte se, že targetFramework je hodnota pro httpRuntime nastavená na 4.6 nebo vyšší.

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

Poznámka

httpRuntime targetFramework Úprava hodnoty změní vlastnosti modulu runtime použité pro vaši aplikaci a může způsobit další drobné změny chování. Po provedení této změny nezapomeňte aplikaci důkladně otestovat. Úplný seznam změn kompatibility najdete v tématu Opětovné cílení změn.

Poznámka

Pokud je hodnota targetFramework 4.7 nebo vyšší, určí systém Windows dostupné protokoly. V Azure App Service je k dispozici protokol TLS 1.2. Pokud ale používáte vlastní virtuální počítač, možná budete muset v operačním systému povolit protokol TLS 1.2.

Verze .NET Core ve verzi Preview

Pokud používáte verzi .NET Core ve verzi Preview nebo vaše aplikace odkazuje na sadu Application Insights SDK přímo nebo nepřímo prostřednictvím závislého sestavení, postupujte podle pokynů k povolení ladicího programu snímků pro jiná prostředí.

Zkontrolujte stavovou stránku rozšíření webu diagnostických služeb.

Pokud byl nástroj Snapshot Debugger povolený prostřednictvím podokna Application Insights na portálu, povolilo ho rozšíření webu Diagnostické služby.

Poznámka

Instalace nástroje Application Insights Snapshot Debugger bez kódu se řídí zásadami podpory .NET Core. Další informace o podporovaných modulech runtime najdete v tématu Zásady podpory .NET Core. Stránku stavu tohoto rozšíření můžete zkontrolovat tak, že přejdete na následující adresu URL: https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Poznámka

Doména odkazu Stavová stránka se bude lišit v závislosti na cloudu. Tato doména bude stejná jako lokalita pro správu Kudu pro App Service. Tato stránka stavu zobrazuje stav instalace agentů Profileru a Snapshot Collectoru. Pokud došlo k neočekávané chybě, zobrazí se a ukáže se, jak ji opravit.

Základní adresu URL této stavové stránky můžete získat pomocí webu pro správu Kudu pro App Service:

  1. Otevřete aplikaci App Service v Azure Portal.
  2. Vyberte Rozšířené nástroje nebo vyhledejte Kudu.
  3. Vyberte Přejít.
  4. Jakmile budete na webu pro správu Kudu, připojte do adresy URL následující /DiagnosticServices a stiskněte klávesu Enter. Skončí takto: https://<kudu-url>/DiagnosticServices

Upgrade na nejnovější verzi balíčku NuGet

V závislosti na tom, jak byl povolen snapshot debugger, si projděte následující možnosti:

  • Pokud byl nástroj Snapshot Debugger povolený prostřednictvím podokna Application Insights na portálu, měla by vaše aplikace už mít spuštěný nejnovější balíček NuGet.

  • Pokud byl program Snapshot Debugger povolený zahrnutím balíčku NuGet Microsoft.ApplicationInsights.SnapshotCollector , použijte Správce balíčků NuGet sady Visual Studio a ujistěte se, že používáte nejnovější verzi nástroje Microsoft.ApplicationInsights.SnapshotCollector.

Nejnovější aktualizace a opravy chyb najdete v poznámkách k verzi.

Kontrola protokolů nahrávače

Po vytvoření snímku se na disku vytvoří soubor minidump (.dmp). Tento minidumpový soubor vytvoří samostatný proces nahrávání a nahraje ho spolu s přidruženými soubory PDB do úložiště ladicího programu snímků Application Insights. Jakmile se minidump úspěšně nahraje, odstraní se z disku. Soubory protokolů pro proces nahrávače se uchovávají na disku. V App Service prostředí najdete tyto protokoly v D:\Home\LogFiles. K vyhledání těchto souborů protokolu použijte web pro správu Kudu pro App Service.

  1. Otevřete aplikaci App Service v Azure Portal.
  2. Vyberte Rozšířené nástroje nebo vyhledejte Kudu.
  3. Vyberte Přejít.
  4. V rozevíracím seznamu Konzola ladění vyberte CMD.
  5. Vyberte LogFiles.

Měl by se zobrazit alespoň jeden soubor s názvem, který začíná Uploader_ na nebo SnapshotUploader_ a příponou .log . Vyberte příslušnou ikonu a stáhněte si soubory protokolů nebo je otevřete v prohlížeči. Název souboru obsahuje jedinečnou příponu, která identifikuje instanci App Service. Pokud je vaše instance App Service hostovaná na více než jednom počítači, existují samostatné soubory protokolu pro každý počítač. Když nahrávač zjistí nový soubor minidump, zaznamená se do souboru protokolu. Tady je příklad úspěšného vytvoření snímku a nahrání:

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

Poznámka

Výše uvedený příklad pochází z verze 1.2.0 Microsoft.ApplicationInsights.SnapshotCollector balíčku NuGet. Ve starších verzích se volá MinidumpUploader.exe proces nahrávání a protokol je méně podrobný. V předchozím příkladu je c12a605e73c44346a984e00000000000instrumentační klíč . Tato hodnota by měla odpovídat instrumentačnímu klíči pro vaši aplikaci. Minidump je přidružený ke snímku s ID 139e411a23934dc0b9ea08a626db16c5. Toto ID můžete později použít k vyhledání přidruženého záznamu výjimky v Application Insights Analytics.

Nahrávač vyhledává nové soubory PDB přibližně každých 15 minut. Tady je příklad:

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

Pro aplikace, které nejsou hostované v App Service, jsou protokoly nahrávače ve stejné složce jako minidumps: %TEMP%\Dumps\<ikey> (kde <ikey> je váš instrumentační klíč).

Cloud Services řešení potíží

V Cloud Services může být výchozí dočasná složka příliš malá pro uložení souborů minidump, což může vést ke ztrátě snímků.

Potřebné místo závisí na celkové pracovní sadě vaší aplikace a počtu souběžných snímků.

Pracovní sada 32bitové webové role ASP.NET je obvykle mezi 200 MB a 500 MB. Povolte alespoň dva souběžné snímky.

Pokud například vaše aplikace využívá 1 GB celkové pracovní sady, měli byste se ujistit, že jsou k dispozici alespoň 2 GB místa na disku pro ukládání snímků.

Pomocí těchto kroků nakonfigurujte roli cloudové služby s vyhrazeným místním prostředkem pro snímky.

  1. Přidejte do cloudové služby nový místní prostředek úpravou souboru definice cloudové služby (.csdef). Následující příklad definuje prostředek s názvem SnapshotStore o velikosti 5 GB.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Upravte spouštěcí kód vaší role a přidejte proměnnou prostředí, která odkazuje na SnapshotStore místní prostředek. V případě rolí pracovních procesů by se měl kód přidat do metody vaší role OnStart :

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

    V případě webových rolí (ASP.NET) by se měl kód přidat do metody webové aplikace 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. Aktualizujte souborApplicationInsights.config vaší role tak, aby přepsal umístění dočasné složky, které používá 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>
    

Přepsání složky Stínová kopie

Při spuštění kolektoru snímků se pokusí najít složku na disku, která je vhodná pro spuštění procesu Nahrávání snímků. Zvolená složka se označuje jako složka Stínová kopie.

Kolektor snímků zkontroluje několik dobře známých umístění a ověří, že má oprávnění ke kopírování binárních souborů nástroje Pro nahrávání snímků. Používají se následující proměnné prostředí:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

Pokud nelze najít vhodnou složku, nástroj Snapshot Collector nahlásí chybu s informací, že se nepodařilo najít vhodnou složku stínové kopie.

Pokud kopírování selže, snapshot collector nahlásí ShadowCopyFailed chybu.

Pokud nahrávací modul nejde spustit, kolektor snímků nahlásí UploaderCannotStartFromShadowCopy chybu. Text zprávy často obsahuje System.UnauthorizedAccessException. K této chybě obvykle dochází, protože aplikace běží pod účtem s omezenými oprávněními. Účet má oprávnění k zápisu do složky stínové kopie, ale nemá oprávnění ke spuštění kódu.

Vzhledem k tomu, že k těmto chybám obvykle dochází během spouštění, bude za nimi obvykle následovat ExceptionDuringConnect chyba s informací, že uploader se nepodařilo spustit.

Pokud chcete tyto chyby obejít, můžete složku stínové kopie zadat ručně prostřednictvím ShadowCopyFolder možnosti konfigurace. Například pomocí 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>

Nebo pokud používáte appsettings.json s aplikací .NET Core:

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

Vyhledání výjimek se snímky pomocí vyhledávání v Application Insights

Při vytvoření snímku se vyvolání výjimky označí ID snímku. Toto ID snímku se zahrne jako vlastní vlastnost, když se výjimka hlásí službě Application Insights. Pomocí vyhledávání v Application Insights můžete najít všechny záznamy s ai.snapshot.id vlastní vlastností.

  1. V Azure Portal přejděte k prostředku Application Insights.
  2. Vyberte Vyhledat.
  3. Zadejte ai.snapshot.id text do textového pole Hledat a stiskněte Enter.

Snímek obrazovky znázorňující hledání telemetrie s ID snímku na portálu

Pokud toto hledání nevrátí žádné výsledky, ve vybraném časovém rozsahu se do Application Insights nenahlásily žádné snímky.

Pokud chcete vyhledat konkrétní ID snímku z protokolů uploaderu, zadejte toto ID do vyhledávacího pole. Pokud nemůžete najít záznamy pro snímek, o který víte, že se nahrál, postupujte takto:

  1. Zkontrolujte, že se díváte na správný prostředek Application Insights, tím, že ověříte instrumentační klíč.

  2. Pomocí časového razítka z protokolu Uploader upravte filtr Časový rozsah hledání tak, aby pokryl daný časový rozsah.

Pokud se stále nezobrazuje výjimka s tímto ID snímku, pak se záznam výjimky nenahlásil službě Application Insights. K této situaci může dojít v případě, že se aplikace chybově ukončí poté, co pořídila snímek, ale ještě předtím, než nahlásila záznam výjimky. V takovém případě zkontrolujte protokoly App Service v části Diagnose and solve problems a zjistěte, jestli nedošlo k neočekávaným restartováním nebo neošetřeným výjimkám.

Úprava pravidel síťového proxy serveru nebo brány firewall

Pokud se vaše aplikace připojuje k internetu přes proxy server nebo bránu firewall, možná budete muset aktualizovat pravidla pro komunikaci se službou Snapshot Debugger.

IP adresy používané nástrojem Application Insights Snapshot Debugger jsou součástí značky služby Azure Monitor. Další informace najdete v dokumentaci ke značky služeb.

Jsou při používání snímků nějaké fakturační náklady?

Za předplatné se neúčtují žádné poplatky související s rozšířením Snapshot Debugger. Shromážděné soubory snímků se ukládají odděleně od telemetrie shromážděné sadami Application Insights SDK a za příjem ani ukládání snímků se neúčtují žádné poplatky.