Sdílet prostřednictvím


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

Pokud jste pro aplikaci povolili ladicí program snímků Application Insights, ale nezobrazují se snímky výjimek, 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.

Nepodporované scénáře

Scénáře, ve kterých není podporovaný kolektor snímků:

Scénář Vedlejší účinky Doporučení
Při použití sady SDK služby Snapshot Collector ve vaší aplikaci přímo (.csproj) a povolili jste pokročilou možnost Spolupráce. Místní sada Application Insights SDK (včetně telemetrie kolektoru snímků) se ztratí, proto nejsou k dispozici žádné snímky.
Při spuštění aplikace může dojít k chybovému ukončení aplikace s chybou System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor.
Další informace o interoperabilitě funkcí Application Insights najdete v dokumentaci.
Pokud používáte možnost Spolupráce s pokročilými možnostmi, použijte prostřednictvím webu Azure Portal injektáž bez kódu, která je povolená.

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

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

Pro App Service a aplikace využívající sadu Application Insights SDK musíte aktualizovat připojovací řetězec pomocí podporovaných přepsání pro Snapshot Debugger:

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

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

V případě aplikace funkcí musíte aktualizovat host.json podporované přepsání:

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

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 možná nahrávání snímku trvá příliš dlouho. K řešení běžných problémů použijte kontrolu stavu snímku.

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

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

Interaktivní rozhraní podobné chatu hledá běžné problémy a provede vás jejich řešením.

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

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

Ověření klíče instrumentace

Ujistěte se, že ve publikované aplikaci používáte správný instrumentační klíč. Instrumentační klíč se obvykle čte ze souboru ApplicationInsights.config . Ověřte, že je hodnota 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 klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.

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

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

Koncový bod snapshot debuggeru vyžaduje protokol TLS verze 1.2. Sada protokolů zabezpečení SSL je jedním z výkvírů povolených httpRuntime targetFramework hodnotou v system.web části web.config. httpRuntime targetFramework Pokud je hodnota 4.5.2 nebo nižší, nebude ve výchozím nastavení zahrnut protokol TLS 1.2.

Poznámka:

Hodnota httpRuntime targetFramework je nezávislá na cílové architektuře používané při sestavování aplikace.

Pokud chcete zkontrolovat nastavení, otevřete soubor web.config a vyhledejte oddíl system.web. Ujistěte se, že targetFramework je hodnota for httpRuntime nastavená na 4.6 nebo vyšší.

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

Poznámka:

Úprava httpRuntime targetFramework hodnoty změní vlnové tísně použité v aplikaci a může způsobit jiné 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 Změny opětovného cílení.

Poznámka:

Pokud je verze targetFramework 4.7 nebo vyšší, systém Windows určuje dostupné protokoly. Ve službě Aplikace Azure 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.

Scénáře režie při snímcích ladicího programu

Snapshot Debugger je navržený pro použití v produkčních prostředích. Výchozí nastavení zahrnují omezení rychlosti, která minimalizují dopad na vaše aplikace.

Můžete ale zaznamenat malou režii procesoru, paměti a vstupně-výstupních operací spojených s ladicím programem Snapshot Debugger, například v následujících scénářích.

Při vyvolání výjimky v aplikaci:

  • Vytvoření podpisu pro typ problému a rozhodnutí, jestli vytvoření snímku přidá malou režii procesoru a paměti.

  • Pokud je povolená deoptimalizace, je režijní náklady na opětovné zatěžování metody, která vyvolala výjimku. K tomu dojde při příštím spuštění této metody. V závislosti na velikosti metody může být mezi 1 ms a 100 ms času procesoru.

Pokud se obslužná rutina výjimky rozhodne vytvořit snímek:

  • Vytvoření snímku procesu trvá přibližně půl sekundy (P50 = 0,3 s, P90 = 1,2 s, P95 = 1,9 s), během kterého je vlákno, které vyvolalo výjimku, pozastaveno. Jiná vlákna nejsou blokovaná.

  • Převod snímku procesu na minidump a jeho nahrání do Application Insights trvá několik minut.

    • Převést: P50 = 63 s, P90 = 187 s, P95 = 275 s.
    • Nahrání: P50 = 31 s, P90 = 75 s, P95 = 98 s.

    To se provádí v Nástroji pro nahrávání snímků, který běží v samostatném procesu. Proces Nahrávání snímků běží pod normální prioritou procesoru a používá vstupně-výstupní operace s nízkou prioritou.

    Minidump se nejprve zapíše na disk a velikost místa na disku je přibližně stejná jako pracovní sada původního procesu. Zápis minidumpu může vyvolat chyby stránky při čtení paměti.

    Minidump se během nahrávání komprimuje, což spotřebovává procesor i paměť v procesu Nahrávání snímků. Režie procesoru, paměti a disku je úměrná velikosti snímku procesu. Snapshot Uploader zpracovává snímky sériově.

Když TrackException je volána:

Snapshot Debugger zkontroluje, jestli je výjimka nová nebo jestli byl pro ni vytvořen snímek. Tím se zvýší malá režie procesoru.

Verze Preview .NET Core

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

Kontrola stránky stavu rozšíření webu diagnostické služby

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

Poznámka:

Bez kódu instalace nástroje Application Insights Snapshot Debugger se řídí zásadami podpory .NET Core. Další informace o podporovaných modulech runtime najdete v tématu Zásady podpory .NET Core.

Stavovou stránku 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 na stránku stavu se bude lišit v závislosti na cloudu.

Tato doména je stejná jako web pro správu Kudu pro App Service. Na stránce stavu se zobrazuje stav instalace agentů .NET Profileru a Snapshot Collectoru. Pokud došlo k neočekávané chybě, ukazuje, jak ji opravit.

K získání základní adresy URL této stránky stavu můžete použít web pro správu Kudu pro Službu App Service:

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

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

Na základě toho, jak byl program Snapshot Debugger povolen, najdete v následujících možnostech:

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ří minidumpový soubor (.dmp). Samostatný proces nahrávače vytvoří tento minidump soubor a nahraje ho spolu s přidruženými soubory PDB do úložiště Snapshot Debugger služby Application Insights. Po úspěšném nahrání minidump se odstraní z disku. Soubory protokolu pro proces nahrávače se uchovávají na disku. Tyto protokoly najdete v D:\Home\LogFilesprostředí App Service Environment. K vyhledání těchto souborů protokolu použijte web pro správu Kudu pro Službu App Service.

  1. Otevřete aplikaci App Service na webu 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_ nebo SnapshotUploader_ příponou .log . Výběrem příslušné ikony stáhněte všechny soubory protokolů nebo je otevřete v prohlížeči. Název souboru obsahuje jedinečnou příponu, která identifikuje instanci služby App Service. Pokud je vaše instance služby App Service hostovaná na více než jednom počítači, jsou pro každý počítač samostatné soubory protokolu. Když nahrávač zjistí nový minidump soubor, 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:

Předchozí příklad pochází z verze 1.2.0 Microsoft.ApplicationInsights.SnapshotCollector balíčku NuGet. V dřívějších verzích se volá MinidumpUploader.exe proces nahrávače 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 k 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 Analýze Application Insights.

Nahrávací nástroj vyhledá 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

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

Řešení potíží s Cloud Services

Ve službě Cloud Services může být výchozí dočasná složka příliš malá na uložení minidumpových souborů, což vede ke ztrátě snímků.

Potřebný prostor 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. Umožňuje aspoň dva souběžné snímky.

Pokud vaše aplikace například používá celkovou pracovní sadu o velikosti 1 GB, měli byste se ujistit, že je k uložení snímků alespoň 2 GB místa na disku.

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

  1. Přidáním nového místního prostředku do cloudové služby upravte soubor definice cloudové služby (.csdef). Následující příklad definuje prostředek volaný SnapshotStore s velikostí 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ího procesu by měl být kód přidán do metody vaší role OnStart :

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

    U 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. Aktualizace souboru ApplicationInsights.config vaší role pro přepsání dočasného umístění 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

Když se spustí kolektor snímků, pokusí se 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 ujistěte se, že má oprávnění ke kopírování binárních souborů Snapshot Uploaderu. Používají se následující proměnné prostředí:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • Pracovník na výpomoc

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

Pokud kopírování selže, nástroj Snapshot Collector hlásí ShadowCopyFailed chybu.

Pokud nahrávací modul nejde spustit, nahlásí UploaderCannotStartFromShadowCopy kolektor snímků chybu. Tělo 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í, často následuje 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ě 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í vyhledávání Application Insights k vyhledání výjimek se snímky

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

  1. Na webu Azure Portal přejděte k prostředku Application Insights.
  2. Vyberte Hledat.
  3. Zadejte ai.snapshot.id textové 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 nebyly do Application Insights hlášeny žá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, který jste věděli, že byl nahraný, postupujte takto:

  1. Pečlivě 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 nahrávače upravte filtr časového rozsahu hledání tak, aby pokrývala tento časový rozsah.

Pokud stále nevidíte výjimku s tímto ID snímku, záznam výjimky nebyl hlášen do Application Insights. K této situaci může dojít v případě, že se aplikace po pořízení snímku chybově ukončila, ale před nahlášeným záznamem výjimky. V tomto případě zkontrolujte protokoly Diagnose and solve problems služby App Service a zjistěte, jestli nedošlo k neočekávaným restartováním nebo neošetřeným výjimkám.

Úprava pravidel proxy serveru sítě 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.

Existují 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.