Řešení potíží s profilerem Application Insights pro .NET

Tento článek obsahuje postup řešení potíží a informace, které vám umožní používat profiler Application Insights pro .NET.

Používáte příslušný koncový bod .NET Profiler?

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

Nastavení aplikace Cloud pro státní správu USA Cloud Čína
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

Běží vaše aplikace na správné verzi?

Profiler je podporován v rozhraní .NET Framework novější než 4.6.2.

Pokud je vaše webová aplikace ASP.NET Core, musí běžet na nejnovějším podporovaném modulu runtime ASP.NET Core.

Používáte správný plán služby Azure?

Profiler pro .NET se v současné době nepodporuje u bezplatných nebo sdílených plánů služby App Service. Pokud chcete začít pracovat, upgradujte na jeden ze základních plánů profileru.

Poznámka:

Plán consumption služby Azure Functions se nepodporuje. Viz Profilová živá aplikace Azure Functions pomocí Application Insights.

Hledáte data profileru .NET ve správném časovém rámci?

Pokud jsou data, která se pokoušíte zobrazit, starší než dva týdny, zkuste omezit časový filtr a zkuste to znovu. Trasování se odstraní po sedmi dnech.

Víte o vzorkovací frekvenci a režii .NET Profileru?

.NET Profiler náhodně spouští dvě minuty za hodinu na každém virtuálním počítači, který hostuje aplikace s povoleným Profilerem.

Poznámka:

Když Profiler aktivně spouští a shromažďuje trasování, obvykle se k vašemu serveru přidává mezi 5 % až 15 % režie procesoru a paměti.

Za ukládání dat zachycených profilerem nejsou žádné další náklady . Data se automaticky odstraní po 15 dnech.

Máte přístup k bráně?

Zkontrolujte, že brána firewall nebo proxy servery neblokují váš přístup k této webové stránce.

Dochází k vypršení časového limitu nebo potřebujete zkontrolovat, jestli je profiler .NET spuštěný?

Data profilace se nahrají jenom v případech, kdy je možné je připojit k požadavku, ke kterému došlo při spuštění profileru. Profiler .NET shromažďuje data po dobu dvou minut každou hodinu. Profiler můžete aktivovat také spuštěním relace profilace.

Profiler zapisuje do prostředku Application Insights trasovací zprávy a vlastní události. Pomocí těchto událostí můžete zjistit, jak profiler běží.

Vyhledejte zprávy trasování a vlastní události odeslané profilerem .NET do vašeho prostředku Application Insights.

  1. V prostředku Application Insights vyberte v horní nabídce možnost Hledat .

    Snímek obrazovky znázorňující výběr tlačítka Hledat z prostředku Application Insights

  2. K vyhledání relevantních dat použijte následující hledaný řetězec:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Snímek obrazovky znázorňující výsledky hledání z výše uvedeného vyhledávacího řetězce

    Předchozí výsledky hledání zahrnují dva příklady hledání ze dvou prostředků umělé inteligence:

    • Pokud aplikace nepřijímá požadavky, když je Profiler spuštěný, zpráva vysvětluje, že nahrávání se zrušilo kvůli žádné aktivitě.

    • Profiler spustil a odeslal vlastní události, když zjistil požadavky, ke kterým došlo při spuštění profileru. ServiceProfilerSample Pokud se zobrazí vlastní událost, znamená to, že byl zaznamenán profil a je k dispozici v podokně výkonu Application Insights.

    Pokud se nezobrazují žádné záznamy, Profiler neběží nebo trvá příliš dlouho, než odpoví. Ujistěte se, že je ve vaší službě Azure povolený Profiler.

Profiler .NET je zapnutý, ale nezachytává se žádné trasování.

I když je Profiler povolený, nemusí zaznamenávat ani nahrávat trasování, zejména v těchto situacích:

  1. Žádné příchozí požadavky na vaši aplikaci:
    Aplikaci můžete vyvolat ručně nebo vytvořit test dostupnosti nebo zátěžový test.

  2. Application Insights nepotvrdil žádnou příchozí telemetrii:

  3. Nastavení profileru pro vzorkování je vypnuté:
    Pokud stále nejsou k dispozici žádné trasování profileru, zkontrolujte nastavení vzorkování profileru.

    1. Otevřete okno Výkon Application Insights>.
    2. Klikněte na Profiler.
    3. Klikněte na tlačítko Aktivační události .
    4. V nastavení triggeru se ujistěte, že je zapnutý přepínač vzorkování .
  4. Stále se nenahrají žádné trasování?
    Vytvořte žádost o podporu nebo se zeptejte komunity Azure. Můžete také odeslat zpětnou vazbu k produktům komunitě zpětné vazby Azure.

Dvojité počítání v paralelních vláknech

Pokud jsou k požadavku přidruženy dvě nebo více paralelních vláken, může být celková časová metrika v prohlížeči zásobníku větší než doba trvání požadavku. V takovém případě je celkový čas vlákna větší než skutečný čas uplynulého času.

Například jedno vlákno může čekat na dokončení druhého vlákna. Prohlížeč se pokusí zjistit tuto situaci a vynechá nezajímavé čekání. Při tom se zobrazuje příliš mnoho informací na straně zobrazení příliš velkého množství informací, a nikoli vynechání důležitých informací.

Když v trasování uvidíte paralelní vlákna, určete, která vlákna čekají, abyste mohli identifikovat horkou cestu pro požadavek. Obvykle vlákno, které rychle přejde do stavu čekání, čeká na ostatní vlákna. Soustřeďte se na ostatní vlákna a ignorujte čas v čekajících vláknech.

Řešení potíží s profilerem .NET ve vaší konkrétní službě Azure

Následující části vás provedou postupem řešení potíží pro použití Profileru ve službě Aplikace Azure nebo v Cloud Services Azure.

Azure App Service

Aby profiler .NET fungoval správně, ujistěte se, že:

  • Vaše webová aplikace má povolenou službu Application Insights se správným nastavením.

  • Webová úloha ApplicationInsightsProfiler3 je spuštěná. Postup kontroly webové úlohy:

    1. Jdi do Kudu. Na webu Azure Portal:

      1. V instanci služby App Service vyberte v levém podokně rozšířené nástroje .
      2. Vyberte Přejít.
    2. V horní nabídce vyberte Řídicí panel Webové úlohy Nástroje>. Otevře se podokno Webové úlohy .

      Pokud se applicationInsightsProfiler3 nezobrazí, restartujte aplikaci App Service.

      Snímek obrazovky znázorňující podokno WebJobs, ve kterém se zobrazuje název, stav a poslední modul runtime úloh

    3. Pokud chcete zobrazit podrobnosti webové úlohy včetně protokolu, vyberte odkaz ApplicationInsightsProfiler3 . Otevře se podokno Podrobnosti průběžné webové úlohy.

      Snímek obrazovky znázorňující podokno Průběžné podrobnosti webové úlohy

Pokud pro vás profiler .NET stále nefunguje, stáhněte si protokol a odešlete lístek podpora Azure.

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

Pokud jste profiler .NET povolili prostřednictvím podokna Application Insights na portálu, spravuje ho rozšíření webu Diagnostické služby. Stavovou stránku tohoto rozšíření můžete zkontrolovat tak, že přejdete na https://{site-name}.scm.azurewebsites.net/DiagnosticServices.

Poznámka:

Doména odkazu na stavovou stránku se liší 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 Profiler a Snapshot Debugger . Pokud došlo k neočekávané chybě, zobrazí se spolu s postupem, jak ji opravit.

K získání základní adresy URL této stavové stránky 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.
  3. Vyberte Přejít.
  4. Na webu pro správu Kudu:
    1. Připojte /DiagnosticServices k adrese URL.
    2. Stiskněte klávesu Enter.

Končí jako https://<kudu-url>/DiagnosticServices.

Stavová stránka se zobrazí podobně jako v následujícím příkladu.

Snímek obrazovky se stránkou stavu diagnostických služeb

Poznámka:

Bez kódu instalace profileru Application Insights pro .NET se řídí zásadami podpory .NET Core. Další informace o podporovanýchmodulech

Ruční instalace

Při konfiguraci profileru .NET se aktualizují nastavení webové aplikace. V případě potřeby můžete aktualizace použít ručně.

Příliš mnoho aktivních relací profilace

Ve službě Aplikace Azure existuje limit pouze jedné relace profilace najednou. Tento limit se vynucuje na úrovni virtuálního počítače napříč všemi aplikacemi a sloty nasazení spuštěnými v plánu služby App Service. Tento limit platí stejně pro relace profilace spuštěné prostřednictvím diagnostiky a řešení problémů, Kudu a Profileru Application Insights pro .NET.

Pokud se profiler .NET pokusí spustit relaci, pokud je již spuštěna jiná, je zaznamenána chyba v protokolu aplikace a také průběžný protokol webové úlohy pro ApplicationInsightsProfiler3.

V protokolech se může zobrazit jedna z následujících zpráv:

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

Kód 0xE111005E chyby označuje, že se relace profilace nemohla spustit, protože už je spuštěná jiná relace.

Pokud se chcete této chybě vyhnout, přesuňte některé webové aplikace do jiného plánu služby App Service nebo v některých aplikacích zakažte Profiler. Pokud používáte sloty nasazení, nezapomeňte zastavit všechny nepoužívané sloty.

Chyba nasazení: Adresář není prázdný 'D:\home\site\wwwroot\App_Data\jobs'

Pokud webovou aplikaci znovu nasazujete do prostředku Web Apps s povoleným profilerem .NET, může se zobrazit následující zpráva:

"Adresář není prázdný 'D:\home\site\wwwroot\App_Data\jobs'"

K této chybě dochází, pokud spouštíte nasazení webu ze skriptů nebo z Azure Pipelines. Vyřešte ho přidáním následujících parametrů nasazení do úlohy Nasazení webu:

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

Tyto parametry odstraní složku používanou profilerem Application Insights pro .NET a odblokují proces opětovného nasazení. Nemají vliv na instanci profileru, která je aktuálně spuštěná.

Je profiler Application Insights pro .NET spuštěný?

Profiler běží ve webové aplikaci jako souvislá webová úloha. Prostředek webové aplikace můžete otevřít na webu Azure Portal. V podokně WebJobs zkontrolujte stav ApplicationInsightsProfiler. Pokud není spuštěný, otevřete protokoly a získejte další informace.

Virtuální počítače a cloudové služby Azure

Pokud chcete zjistit, jestli je profiler .NET správně nakonfigurovaný pomocí diagnostiky Azure:

  1. Ověřte, že obsah nasazené konfigurace diagnostiky Azure je to, co očekáváte.

  2. Ujistěte se, že Azure Diagnostics předává správný klíč iKey na příkazovém řádku Profileru.

  3. Zkontrolujte soubor protokolu profileru a zjistěte, jestli se profiler .NET spustil, ale vrátil chybu.

Pokud chcete zkontrolovat nastavení, která se použila ke konfiguraci diagnostiky Azure:

  1. Přihlaste se k virtuálnímu počítači.

  2. Otevřete soubor protokolu v tomto umístění. Verze modulu plug-in může být na vašem počítači novější.

    Pro virtuální počítače:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    Pro Azure Cloud Services:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. V souboru vyhledejte řetězec WadCfg a vyhledejte nastavení předaná virtuálnímu počítači pro konfiguraci diagnostiky Azure.

  4. Zkontrolujte, jestli je klíč iKey používaný jímkou .NET Profiler správný.

  5. Zkontrolujte příkazový řádek, který spouští Profiler. Argumenty příkazového řádku jsou v následujícím souboru (jednotka může být c: nebo d: může být skrytá):

    Pro virtuální počítače:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    Pro Azure Cloud Services:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Ujistěte se, že je klíč iKey na příkazovém řádku Profileru správný.

  7. Pomocí cesty nalezené v předchozím souboru config.json zkontrolujte soubor protokolu profileru s názvem BootstrapN.log. Zobrazuje se:

    • Informace o ladění, které indikují nastavení, která Profiler používá.
    • Stav a chybové zprávy z Profileru

    Soubor najdete:

    Pro virtuální počítače:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    Pro Azure Cloud Services:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. Pokud je profiler .NET spuštěný, když vaše aplikace přijímá požadavky, zobrazí se následující zpráva: "Aktivita zjištěná z iKey".

  9. Po nahrání trasování se zobrazí následující zpráva: "Spustit nahrání trasování".

Ú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 s profilerem .NET.

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

Technická podpora

Pokud stále potřebujete pomoc, odešlete lístek podpory na webu Azure Portal. Zahrňte ID korelace z chybové zprávy.