Řešení potíží se službou Azure Diagnostics

Tento článek popisuje informace o řešení potíží, které jsou relevantní pro používání Azure Diagnostics. Další informace o diagnostice Azure najdete v tématu Azure Diagnostics přehled.

Logické komponenty

Spouštěč diagnostických modulů plug-in (DiagnosticsPluginLauncher.exe): Spustí rozšíření Azure Diagnostics. Slouží jako proces vstupního bodu.

Modul plug-in diagnostiky (DiagnosticsPlugin.exe): Konfiguruje, spouští a spravuje životnost agenta monitorování. Jedná se o hlavní proces, který spouštěč spouští.

Agent monitorování (Procesy MonAgent*.exe): Monitory, shromažďuje a přenáší diagnostická data.

Cesty k protokolům nebo artefaktům

Následují cesty k některým důležitým protokolům a artefaktům. Na tyto informace odkazujeme v celém zbytku dokumentu.

Azure Cloud Services

Artefakt Cesta
konfigurační soubor Azure Diagnostics %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnosticsversion<>\Config.txt
Soubory protokolů C:\Logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnosticsversion<>\
Místní úložiště diagnostických dat C:\Resources\DirectoryCloudServiceDeploymentID<>.< RoleName>. DiagnosticStore\WAD0107\Tables
Konfigurační soubor agenta monitorování C:\Resources\DirectoryCloudServiceDeploymentID<>.< RoleName>.DiagnosticStore\WAD0107\Configuration\MaConfig.xml
balíček rozšíření Azure Diagnostics %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnosticsversion<>
Cesta nástroje pro shromažďování protokolů %SystemDrive%\Packages\GuestAgent\
Soubor protokolu MonAgentHost C:\Resources\DirectoryCloudServiceDeploymentID<>.< RoleName>. DiagnosticStore\WAD0107\Configuration\MonAgentHost.<>seq_num.log

Virtuální počítače

Artefakt Cesta
konfigurační soubor Azure Diagnostics C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsversion<>\RuntimeSettings
Soubory protokolů C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsVersion<>\
Místní úložiště diagnostických dat C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsVersion<>\WAD0107\Tables
Konfigurační soubor agenta monitorování C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsVersion<>\WAD0107\Configuration\MaConfig.xml
Stavový soubor C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsversion<>\Status
balíček rozšíření Azure Diagnostics C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsDiagnosticsVersion<>
Cesta nástroje pro shromažďování protokolů C:\WindowsAzure\Logs\WaAppAgent.log
Soubor protokolu MonAgentHost C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsVersion<>\WAD0107\Configuration\MonAgentHost.<>seq_num.log

Data metrik se nezobrazují na webu Azure Portal

Azure Diagnostics poskytuje data metrik, která se dají zobrazit v Azure Portal. Pokud máte problémy se zobrazením dat na portálu, zkontrolujte tabulku WADMetrics* v účtu úložiště Azure Diagnostics a zjistěte, jestli jsou k dispozici odpovídající záznamy metrik a ujistěte se, že je zaregistrovaný poskytovatel prostředků Microsoft.Přehledy.

Klíč oddílu tabulky je ID prostředku, virtuální počítač nebo škálovací sada virtuálních počítačů. RowKey je název metriky (označovaný také jako název čítače výkonu).

Pokud je ID prostředku nesprávné, zkontrolujte DiagnosticConfigurationMetricsResourceId>> a zjistěte, jestli je ID prostředku správně nastavené.

Pokud pro konkrétní metriku nejsou žádná data, zkontrolujte configurationPerformanceCounter>diagnostiky a zjistěte, jestli je metrika (čítač výkonu) zahrnutá. Ve výchozím nastavení povolíme následující čítače:

  • \Processor(_Total)% doba procesoru
  • \Memory\Available Bytes
  • \ASP.NET Applications(Total)\Requests/Sec
  • \ASP.NET Applications(Total)\Errors Total/Sec
  • \ASP.NET\Požadavky zařazené do fronty
  • \ASP.NET\Žádosti odmítnuty
  • \Processor(w3wp)% Doba procesoru
  • \Process(w3wp)\Privátní bajty
  • \Process(WaIISHost)% čas procesoru
  • \Process(WaIISHost)\Privátní bajty
  • \Process(WaWorkerHost)% čas procesoru
  • \Process(WaWorkerHost)\Privátní bajty
  • \Memory\Page Faults/s
  • Paměť .NET CLR(Global)% čas v GC
  • \LogicalDisk(C:)\Bajty zápisu disku/s
  • \LogicalDisk(C:)\Bajty čtení disku/s
  • \LogicalDisk(D:)\Bajty zápisu disku/s
  • \LogicalDisk(D:)\Bajty čtení disku/s

Pokud je konfigurace správně nastavená, ale stále nemůžete zobrazit data metrik, postupujte podle následujících pokynů, které vám pomůžou s řešením potíží.

Azure Diagnostics nejde spustit

Informace o tom, proč se Azure Diagnostics nepodařilo spustit, najdete v souboru DiagnosticsPluginLauncher.log a DiagnosticsPlugin.log v umístění souborů protokolu, které jste zadali dříve.

Pokud tyto protokoly značí Monitoring Agent not reporting success after launch, znamená to, že při spuštění MonAgentHost.exe došlo k chybě. Podívejte se na protokoly v umístění, které je uvedeno MonAgentHost log file v předchozí části.

Poslední řádek souborů protokolu obsahuje ukončovací kód.

DiagnosticsPluginLauncher.exe Information: 0 : [4/16/2016 6:24:15 AM] DiagnosticPlugin exited with code 0

Pokud najdete záporný ukončovací kód, projděte si tabulku ukončovacího kódu v části Odkazy.

Diagnostická data se neprotokolují do služby Azure Storage

Určete, jestli se žádná z dat nezobrazuje nebo se některá data nezobrazují.

Protokoly infrastruktury diagnostiky

Diagnostika protokoluje všechny chyby v protokolech infrastruktury diagnostiky. Ujistěte se, že jste v konfiguraci povolili zachycení protokolů infrastruktury diagnostiky. Pak můžete rychle vyhledat všechny relevantní chyby, které se zobrazí v tabulce ve DiagnosticInfrastructureLogsTable vašem nakonfigurovaným účtu úložiště.

Nezobrazují se žádná data

Nejběžnějším důvodem, proč se data událostí vůbec nezobrazují, je, že informace o účtu úložiště jsou definovány nesprávně.

Řešení: Opravte konfiguraci diagnostiky a přeinstalujte diagnostiku.

Pokud je účet úložiště správně nakonfigurovaný, vzdálený přístup k počítači a ověřte, že jsou spuštěnéDiagnosticsPlugin.exea MonAgentCore.exe . Pokud nejsou spuštěné, postupujte podle pokynů v Azure Diagnostics se nespouští.

Pokud jsou procesy spuštěné, přejděte do části Probíhá zachycení dat místně? a postupujte podle pokynů.

Pokud se tím problém nevyřeší, zkuste:

  1. Odinstalace agenta
  2. Odebrání adresáře C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics
  3. Znovu nainstalovat agenta

Chybí část dat.

Pokud získáváte nějaká data, ale ne všechna, znamená to, že je správně nastavený kanál shromažďování a přenosu dat. Pokud chcete tento problém zúžit, postupujte podle pododdílů.

Je kolekce nakonfigurovaná?

Konfigurace diagnostiky obsahuje pokyny pro konkrétní typ dat, která se mají shromažďovat. Zkontrolujte konfiguraci a ověřte, že hledáte jenom data, která jste nakonfigurovali pro kolekci.

Generuje hostitel data?

  • Čítače výkonu: Otevřete perfmon a zkontrolujte čítač.

  • Protokoly trasování: Vzdálený přístup k virtuálnímu počítači a přidání TextWriterTraceListener do konfiguračního souboru aplikace Viz https://msdn.microsoft.com/library/sk36c28t.aspx nastavení naslouchacího procesu textu. Ujistěte se, <trace> že prvek obsahuje <trace autoflush="true">.
    Pokud se vygenerované protokoly trasování nezobrazují, přečtěte si další informace o chybějících protokolech trasování.

  • Trasování etW: Vzdálený přístup k virtuálnímu počítači a instalace nástroje PerfView V PerfView spusťte FileUser>CommandListen>etwprovder1etwprovider2> atd. Příkaz Listen rozlišuje malá a velká písmena a mezi seznamem zprostředkovatelů etW oddělených čárkami nelze mezery. Pokud se příkaz nepovede spustit, můžete v pravém dolním rohu nástroje Perfview vybrat tlačítko Protokol a zjistit, co se pokusilo spustit a jaký byl výsledek. Za předpokladu, že je vstup správný, zobrazí se nové okno. Za několik sekund začnete sledovat trasování etW.

  • Protokoly událostí: Vzdálený přístup k virtuálnímu počítači Otevřete Event Viewera ujistěte se, že události existují.

Dochází k zachycení dat místně?

Dále se ujistěte, že se data zaznamenávají místně. Data jsou místně uložená v *.tsf souborech v místním úložišti diagnostických dat. Různé druhy protokolů se shromažďují v různých .tsf souborech. Názvy jsou podobné názvům tabulek v Azure Storage.

Například Performance Counters se shromáždí .PerformanceCountersTable.tsf Protokoly událostí se shromažďují v WindowsEventLogsTable.tsf. Pomocí pokynů v části Extrakce místních protokolů otevřete soubory místní kolekce a ověřte, že se shromažďují na disku.

Pokud se protokoly neshromažďují místně a už jste ověřili, že hostitel generuje data, pravděpodobně máte problém s konfigurací. Pečlivě zkontrolujte konfiguraci.

Zkontrolujte také konfiguraci vygenerovanou pro MaConfig.xml MonitoringAgent. Ověřte, že existuje oddíl, který popisuje příslušný zdroj protokolu. Pak ověřte, že se při překladu neztratí mezi konfigurací diagnostiky a konfigurací agenta monitorování.

Přenáší se data?

Pokud jste ověřili, že se data zaznamenávají místně, ale v účtu úložiště je stále nevidíte, postupujte takto:

  • Ověřte, že jste zadali správný účet úložiště a že jste nezadali klíče pro daný účet úložiště. U azure Cloud Services někdy vidíme, že se uživatelé neaktualizují useDevelopmentStorage=true.

  • Ověřte správnost zadaného účtu úložiště. Ujistěte se, že nemáte síťová omezení, která brání tomu, aby komponenty dosáhly koncových bodů veřejného úložiště. Jedním ze způsobů, jak to udělat, je vzdálený přístup k počítači a potom zkuste něco napsat do stejného účtu úložiště sami.

  • Nakonec se můžete podívat na to, jaké chyby hlásí agent monitorování. Agent monitorování zapíše své protokoly do maeventtable.tsfmístního úložiště diagnostických dat. Při otevírání tohoto souboru postupujte podle pokynů v části Extrakce místních protokolů . Pak se pokuste zjistit, jestli nedošlo errors k selhání při čtení místních souborů do úložiště.

Zaznamenávání a archivace protokolů

Pokud přemýšlíte o kontaktování podpory, první věc, kterou vás může požádat, je shromáždit protokoly z počítače. Můžete ušetřit čas tím, že to uděláte sami. CollectGuestLogs.exe Spusťte nástroj v cestě nástroje shromažďování protokolů. Vygeneruje .zip soubor se všemi relevantními protokoly Azure ve stejné složce.

Tabulky diagnostických dat se nenašly

Tabulky ve službě Azure Storage, které obsahují události etW, mají název pomocí následujícího kódu:

        if (String.IsNullOrEmpty(eventDestination)) {
            if (e == "DefaultEvents")
                tableName = "WADDefault" + MD5(provider);
            else
                tableName = "WADEvent" + MD5(provider) + eventId;
        }
        else
            tableName = "WAD" + eventDestination;

Zde naleznete příklad:

        <EtwEventSourceProviderConfiguration provider="prov1">
          <Event id="1" />
          <Event id="2" eventDestination="dest1" />
          <DefaultEvents />
        </EtwEventSourceProviderConfiguration>
        <EtwEventSourceProviderConfiguration provider="prov2">
          <DefaultEvents eventDestination="dest2" />
        </EtwEventSourceProviderConfiguration>
"EtwEventSourceProviderConfiguration": [
    {
        "provider": "prov1",
        "Event": [
            {
                "id": 1
            },
            {
                "id": 2,
                "eventDestination": "dest1"
            }
        ],
        "DefaultEvents": {
            "eventDestination": "DefaultEventDestination",
            "sinks": ""
        }
    },
    {
        "provider": "prov2",
        "DefaultEvents": {
            "eventDestination": "dest2"
        }
    }
]

Tento kód generuje čtyři tabulky:

Událost Název tabulky
provider="prov1" <Event id="1" /> WADEvent+MD5("prov1")+"1"
provider="prov1" <Event id="2" eventDestination="dest1" /> WADdest1
provider="prov1" <DefaultEvents /> WADDefault+MD5("prov1")
provider="prov2" <DefaultEvents eventDestination="dest2" /> WADdest2

Reference

Kontrola konfigurace rozšíření diagnostiky

Nejjednodušší způsob, jak zkontrolovat konfiguraci rozšíření, je přejít do Azure Resource Exploreru a pak přejít na virtuální počítač nebo cloudovou službu, kde je rozšíření Azure Diagnostics (IaaSDiagnostics / PaaDiagnostics).

Případně vzdálená plocha do počítače a podívejte se na konfigurační soubor Azure Diagnostics popsaný v části Cesta artefaktů protokolu.

V obou případech vyhledejte Microsoft.Azure.Diagnostics a pak zadejte pole xmlCfg nebo WadCfg .

Pokud hledáte virtuální počítač a pole WadCfg je přítomné, znamená to, že konfigurace je ve formátu JSON. Pokud je pole xmlCfg přítomno, znamená to, že konfigurace je ve formátu XML a je kódovaná jako base64. Pokud chcete zobrazit xml načtený diagnostikou, musíte ho dekódovat .

Pokud pro roli cloudové služby vyberete konfiguraci z disku, data jsou zakódovaná jako base64, takže je potřeba ho dekódovat , abyste viděli XML načtený diagnostikou.

Azure Diagnostics ukončovací kódy modulu plug-in

Modul plug-in vrátí následující ukončovací kódy:

Ukončovací kód Popis
0 Úspěch.
-1 Obecná chyba
-2 Nelze načíst soubor rcf.

K této vnitřní chybě by mělo dojít pouze v případě, že spouštěč modulů plug-in agenta hosta je na virtuálním počítači ručně vyvolán nesprávně.

-3 Nelze načíst konfigurační soubor diagnostiky.

Řešení: Příčinou konfiguračního souboru není předávání ověření schématu. Řešením je poskytnout konfigurační soubor, který vyhovuje schématu.

-4 Další instance diagnostiky monitorovacího agenta už používá místní adresář prostředků.

Řešení: Zadejte jinou hodnotu pro LocalResourceDirectory.

-6 Spouštěč modulů plug-in agenta hosta se pokusil spustit diagnostiku s neplatným příkazovým řádkem.

K této vnitřní chybě by mělo dojít pouze v případě, že spouštěč modulů plug-in agenta hosta je na virtuálním počítači ručně vyvolán nesprávně.

-10 Modul plug-in Diagnostika se ukončil s neošetřenou výjimkou.
-11 Agent hosta nemohl vytvořit proces zodpovědný za spuštění a monitorování agenta monitorování.

Řešení: Ověřte, že jsou k dispozici dostatečné systémové prostředky pro spouštění nových procesů.

-101 Neplatné argumenty při volání modulu plug-in Diagnostiky

K této vnitřní chybě by mělo dojít pouze v případě, že spouštěč modulů plug-in agenta hosta je na virtuálním počítači ručně vyvolán nesprávně.

-102 Proces modulu plug-in se nemůže inicializovat sám.

Řešení: Ověřte, že jsou k dispozici dostatečné systémové prostředky pro spouštění nových procesů.

-103 Proces modulu plug-in se nemůže inicializovat sám. Konkrétně nejde vytvořit objekt protokolovacího nástroje.

Řešení: Ověřte, že jsou k dispozici dostatečné systémové prostředky pro spouštění nových procesů.

-104 Nelze načíst soubor rcf poskytovaný agentem hosta.

K této vnitřní chybě by mělo dojít pouze v případě, že je spouštěč modulu plug-in agenta hosta na virtuálním počítači ručně vyvolán nesprávně.

-105 Modul plug-in Diagnostika nemůže otevřít konfigurační soubor diagnostiky.

K této vnitřní chybě by mělo dojít pouze v případě, že je modul plug-in Diagnostics na virtuálním počítači ručně vyvolán nesprávně.

-106 Nelze přečíst konfigurační soubor diagnostiky.

Příčinou je, že konfigurační soubor nepředává ověření schématu.

Řešení: Zadejte konfigurační soubor, který vyhovuje schématu. Další informace najdete v tématu Postup kontroly konfigurace rozšíření diagnostiky.

-107 Adresář prostředků předá agentu monitorování je neplatný.

K této vnitřní chybě by mělo dojít pouze v případě, že je agent monitorování na virtuálním počítači ručně vyvolán nesprávně.

-108 Konfigurační soubor diagnostiky nelze převést na konfigurační soubor agenta monitorování.

K této vnitřní chybě by mělo dojít pouze v případě, že je modul plug-in Diagnostics vyvolán ručně s neplatným konfiguračním souborem.

-110 Obecná chyba konfigurace diagnostiky

K této vnitřní chybě by mělo dojít pouze v případě, že je modul plug-in Diagnostics vyvolán ručně s neplatným konfiguračním souborem.

-111 Agenta monitorování nelze spustit.

Řešení: Ověřte, že jsou k dispozici dostatečné systémové prostředky.

-112 Obecná chyba

Extrakce místních protokolů

Agent monitorování shromažďuje protokoly a artefakty jako .tsf soubory. Soubor .tsf není čitelný, ale můžete ho .csv převést na následující:

<Azure diagnostics extension package>\Monitor\x64\table2csv.exe <relevantLogFile>.tsf

Ve stejné cestě jako odpovídající .tsf soubor se vytvoří nový soubor<relevantLogFile>.csv.

Poznámka

Tento nástroj stačí spustit pouze pro hlavní soubor .tsf (například PerformanceCountersTable.tsf). Doprovodné soubory (například PerformanceCountersTables_**001.tsf, PerformanceCountersTables_**002.tsf atd.) se automaticky zpracovávají.

Další informace o chybějících protokolech trasování

Poznámka

Následující informace platí většinou pro Azure Cloud Services pokud jste nenakonfigurovali DiagnosticsMonitorTraceListener na aplikaci, která běží na virtuálním počítači IaaS.

  • Ujistěte se, že je diagnosticmonitorTraceListener nakonfigurovaný v web.config nebo app.config. Ve výchozím nastavení se konfiguruje v projektech cloudové služby. Někteří zákazníci ho ale okomentují, což způsobí, že diagnostické příkazy neshromažďují příkazy trasování.

  • Pokud protokoly nejsou zapsány z OnStart nebo Run metoda, ujistěte se , že diagnosticMonitorTraceListener je v app.config. Ve výchozím nastavení se nachází v web.config, ale to platí jenom pro kód spuštěný v rámci w3wp.exe. Proto ho potřebujete v app.config k zachycení trasování spuštěných v WaIISHost.exe.

  • Ujistěte se, že používáte diagnostics.Trace.TraceXXX místo diagnostics.Debug.WriteXXX. Příkazy Debug se odeberou z buildu vydané verze.

  • Ujistěte se, že zkompilovaný kód obsahuje řádky Diagnostics.Trace (k ověření použijte Reflector, ildasm nebo ILSpy). Příkazy Diagnostics.Trace se odeberou z kompilovaného binárního souboru, pokud nepoužíváte symbol podmíněné kompilace TRACE. Jedná se o běžný problém, ke kterému dochází, když k sestavení projektu používáte nástroj msbuild.

Známé problémy a zmírnění rizik

Tady je seznam známých problémů se známými zmírněními rizik:

1. Závislost .NET 4.5

rozšíření Windows Azure Diagnostics má závislost modulu runtime na rozhraní .NET 4.5 nebo novějším. V době psaní tohoto článku mají všechny počítače zřízené pro Azure Cloud Services i všechny oficiální image založené na virtuálních počítačích Azure, nainstalované rozhraní .NET 4.5 nebo novější.

Stále je možné narazit na situaci, kdy se pokusíte spustit rozšíření Windows Azure Diagnostics na počítači, který nemá .NET 4.5 nebo novější. K tomu dochází při vytváření počítače ze staré image nebo snímku nebo při používání vlastního disku.

To se obvykle manifestuje jako ukončovací kód 255 při spuštění DiagnosticsPluginLauncher.exe. K chybě dochází kvůli následující neošetřené výjimce:

System.IO.FileLoadException: Could not load file or assembly 'System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies

Zmírnění: Nainstalujte na počítač .NET 4.5 nebo novější.

2. Data čítačů výkonu jsou k dispozici v úložišti, ale nezobrazují se na portálu.

Prostředí portálu na virtuálních počítačích ve výchozím nastavení zobrazuje určité čítače výkonu. Pokud se čítače výkonu nezobrazují a víte, že se data generují, protože jsou dostupná v úložišti, zkontrolujte následující:

  • Určuje, jestli data v úložišti mají názvy čítačů v angličtině. Pokud názvy čítačů nejsou v angličtině, graf metrik portálu ho nedokáže rozpoznat. Zmírnění rizik: Změňte jazyk počítače na angličtinu pro systémové účty. Uděláte to tak, že vyberete Nastavení Ovládací panely>RegionAdministrativeCopy>>. Dále zrušte výběr úvodní obrazovky a systémových účtů , aby se na systémový účet nepoužádá vlastní jazyk.

  • Pokud v čítačích výkonu používáte zástupné čítače (*), portál nebude moct korelovat nakonfigurovaný a shromážděný čítač při odesílání čítačů výkonu do jímky Azure Storage. Zmírnění rizik: Abyste měli jistotu, že můžete používat zástupné cardy a portál rozbalit (*), směrujte čítače výkonu do jímky služby Azure Monitor.