Řešení potíží s povolením služby Application Přehledy Snapshot Debugger nebo zobrazením snímků

Pokud jste pro Přehledy Snapshot Debugger povolili službu Application Přehledy Snapshot Debugger, ale u výjimek se nezískaly žádné snímky, můžete tyto pokyny použít k řešení potíží.

Snímky se negenerují z mnoha různých důvodů. Můžete začít spuštěním kontroly stavu snímku a identifikovat některé z možných běžných příčin.

Ujistěte se, že používáte odpovídající koncový bod Snapshot Debugger.

V současné době jsou k dispozici pouze oblasti, které vyžadují úpravy Azure Government a Azure China.

Pro App Service a aplikace používající sadu Application Přehledy SDK je nutné aktualizovat připojovací řetězec pomocí podporovaných přepsání pro Snapshot Debugger, jak je definováno níže:

Vlastnost připojovacího řetězce Cloud státní správy USA Cloud pro Čínu
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Další informace o jiných přepsáních připojení najdete v dokumentaci k Přehledy aplikací.

V případě aplikace Function App je nutné aktualizovat host.json pomocí podporovaných přepsání níže:

Vlastnost Cloud státní správy USA Cloud pro Čínu
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Níže je příklad aktualizace koncového host.json bodu agenta cloudové služby us Government:

{
  "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ů má za následek nezobrazování otevřeného snímku ladění. Použití zastaralého Snapshot Collector, například dosažení denního limitu nahrávání; nebo nahrání snímku trvá příliš dlouho. K řešení běžných problémů použijte kontrolu stavu snímku.

V podokně výjimky v zobrazení trasování od konce je odkaz, který vás zavede na kontrolu stavu snímku.

Zadání kontroly stavu snímku

Interaktivní rozhraní chatu hledá běžné problémy a provede vás jejich opravami.

Kontrola stavu

Pokud se tím problém nevyřeší, postupujte podle následujících ručních kroků pro ř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á z ApplicationInsights.config souboru. Ověřte, že hodnota je stejná jako instrumentační klíč pro prostředek Application Přehledy, který vidíte na portálu.

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

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

Koncový Snapshot Debugger vyžaduje protokol TLS verze 1.2. Sada protokolů zabezpečení SSL je jedním z vlastností povolených hodnotou httpRuntime targetFramework v oddílu system.web web.config. Pokud je objekt httpRuntime targetFramework 4.5.2 nebo nižší, protokol TLS 1.2 se ve výchozím nastavení nezahrne.

Poznámka

Hodnota httpRuntime targetFramework je nezávislá na cílovém rozhraní použitém při sestavování aplikace.

Pokud chcete toto nastavení zkontrolovat, otevřete soubor web.config a vyhledejte část system.web. Ujistěte targetFramework se, že je httpRuntime pro nastavená na 4.6 nebo vyšší.

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

Poznámka

Úpravou hodnoty httpRuntime targetFramework se změní tok modulu runtime použitý pro vaši aplikaci a může dojít k jiným drobným změnám chování. Po provedení této změny nezapomeňte aplikaci důkladně otestovat. Úplný seznam změn kompatibility najdete v tématu Změna cílení na změny.

Poznámka

Pokud je targetFramework 4.7 nebo vyšší, Windows určí 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 Preview .NET Core

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

Zkontrolujte stránku stavu rozšíření webu Diagnostické služby.

Pokud Snapshot Debugger prostřednictvím podokna Application Přehledy na portálu, povolilo ho rozšíření webu Diagnostické služby.

Poznámka

Instalace aplikačních aplikací bez kódu Přehledy Snapshot Debugger se řídí zásadou podpory pro .NET Core. Další informace o podporovaných modulech runtime najdete v tématu Zásady podpory pro .NET Core.

Stránku stavu tohoto rozšíření můžete zkontrolovat na následující adrese URL: https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Poznámka

Doména odkazu na stránku stavu se bude lišit v závislosti na cloudu. Tato doména bude stejná jako web pro správu Kudu pro App Service.

Na této stránce stavu se zobrazuje stav instalace profileru a Snapshot Collector agentů. Pokud došlo k neočekávané chybě, zobrazí se a ukáže, jak ji opravit.

Pomocí webu pro správu Kudu pro App Service získat základní adresu URL této stavové stránky:

  1. Otevřete svou 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í a /DiagnosticServices stiskněte enter. Bude to mít tento konec: https://<kudu-url>/DiagnosticServices

Zobrazí se stránka stavu podobná následující:  Stránka stavu diagnostických služeb

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

V závislosti na Snapshot Debugger povolených najdete následující možnosti:

  • Pokud Snapshot Debugger prostřednictvím podokna Application Přehledy naportálu , měla by vaše aplikace už mít spuštěný nejnovější NuGet balíčku.

  • Pokud jste Snapshot Debugger povolili zahrnutím balíčku NuGet Microsoft.ApplicationInsights.SnapshotCollector, použijte NuGet Správce balíčků od Visual Studio a ujistěte se, že používáte nejnovější verzi 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 zkrácený soubor vytvoří samostatný proces nahrávače a společně s přidruženými soubory PBS ho nahraje do úložiště Přehledy Snapshot Debugger aplikace. Po úspěšném nahrání minidumpu se z disku odstraní. Soubory protokolu pro proces nahrávače se uchovávají na disku. V App Service prostředí najdete tyto protokoly v D:\Home\LogFiles . Pomocí webu pro správu Kudu pro App Service tyto soubory protokolu vyhledejte.

  1. Otevřete svou 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á na Uploader_ nebo SnapshotUploader_ a .log příponou . Výběrem příslušné ikony stáhněte všechny soubory protokolu nebo je otevřete v prohlížeči. Název souboru obsahuje jedinečnou příponu, která identifikuje App Service instanci. Pokud je App Service instance hostovaná na více než jednom počítači, jsou pro každý počítač samostatné soubory protokolu. Když nahrávač zjistí nový soubor minidump, zaznamená se do souboru protokolu. Tady je příklad úspěšného 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 balíčku Microsoft.ApplicationInsights.SnapshotCollector verze 1.2.0 NuGet. V dřívějších verzích se volá proces nahrávače a MinidumpUploader.exe protokol je méně podrobný.

V předchozím příkladu je instrumentační klíč c12a605e73c44346a984e00000000000 . Tato hodnota by měla odpovídat instrumentačnímu klíči vaší aplikace. K minidumpu je přidružený snímek s ID 139e411a23934dc0b9ea08a626db16c5 . Toto ID můžete později použít k vyhledání přidruženého záznamu výjimky ve službě Application Přehledy Analytics.

Nahrávač prohledává nové soubory PDB přibližně jednou za 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

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

Řešení Cloud Services

V Cloud Services může být výchozí dočasná složka příliš malá na to, aby se soubory s minimálním minimem podržely, což vede 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 obvykle mezi 200 MB a 500 MB. Povolte aspoň dva souběžné snímky.

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

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

  1. Úpravou souboru definice cloudové služby (. csdef) přidejte do cloudové služby nový místní prostředek. V následujícím příkladu je definován prostředek SnapshotStore s názvem o velikosti 5 GB.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Úpravou spouštěcího kódu role přidejte proměnnou prostředí, která odkazuje na SnapshotStore místní prostředek. Pro role pracovního procesu by se kód měl přidat do metody vaší role OnStart :

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

    pro webové role (ASP.NET) by měl být kód přidán do metody vaší 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 soubor ApplicationInsights.config role pro přepsání umístění dočasné složky používané nástrojem 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

Po spuštění Snapshot Collector se pokusí najít složku na disku, která je vhodná pro spuštění procesu odeslání snímku. Vybraná složka je známá jako složka stínové kopie.

Snapshot Collector kontroluje několik známých umístění a zajišťuje tak, že má oprávnění ke kopírování binárních souborů nástroje pro odeslání snímků. Používají se následující proměnné prostředí:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APLIKACÍ
  • NÁZVEM

Pokud se vhodná složka nenajde, Snapshot Collector nahlásí chybu oznamující, že se nepovedlo najít vhodnou složku stínové kopie.

Pokud se kopie nezdařila, Snapshot Collector hlásí ShadowCopyFailed chybu.

Pokud nelze spustit odeslání, Snapshot Collector hlásí UploaderCannotStartFromShadowCopy chybu. Text zprávy obsahuje často 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 spouštění kódu.

Vzhledem k tomu, že k těmto chybám obvykle dochází při spuštění, obvykle se jedná o ExceptionDuringConnect chybu oznamující, že se nepovedlo spustit odeslání.

Pokud chcete tyto chyby vyřešit, můžete ručně zadat složku stínové kopie pomocí 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"
  }
}

použití hledání Application Insights k nalezení výjimek s snímky

Při vytvoření snímku je tato výjimka označena ID snímku. toto ID snímku je zahrnuté jako vlastní vlastnost, pokud je výjimka hlášena 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 Hledat.
  3. ai.snapshot.idDo textového pole hledání zadejte a stiskněte klávesu ENTER.

Hledání telemetrie s ID snímku na portálu

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

Pokud chcete v protokolech odeslání vyhledat konkrétní ID snímku, zadejte toto ID do vyhledávacího pole. Pokud nemůžete najít záznamy pro snímek, který víte, že jste nahráli, postupujte takto:

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

  2. Pomocí časového razítka z protokolu odeslání upravte filtr časového rozsahu hledání tak, aby pokryl tento časový rozsah.

pokud stále nevidíte výjimku s tímto ID snímku, pak se záznam výjimky nenahlásil Application Insights. K této situaci může dojít, pokud dojde k chybě vaší aplikace po pořízení snímku, ale 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ému restartování nebo neošetřeným výjimkám.

Upravit síťová proxy nebo pravidla brány firewall

Pokud se vaše aplikace připojuje k Internetu prostřednictvím proxy serveru nebo brány firewall, možná budete muset aktualizovat pravidla pro komunikaci se službou Snapshot Debugger.

ip adresy, které používá Application Insights Snapshot Debugger, jsou součástí značky služby Azure Monitor. Další informace najdete v dokumentaci k značkám služby.