Sdílet prostřednictvím


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

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

Logické komponenty

Tyto komponenty jsou:

  • Diagnostické moduly plug-in Launcher (DiagnosticsPluginLauncher.exe): Spustí rozšíření Diagnostics. Slouží jako proces vstupního bodu.
  • Modul plug-in diagnostiky (DiagnosticsPlugin.exe): Konfiguruje, spouští a spravuje životnost agenta monitorování. Je to hlavní proces, který spouští spouštěč.
  • Agent monitorování (procesy MonAgent*.exe): Monitoruje, shromažďuje a přenáší diagnostická data.

Cesty k protokolům nebo artefaktům

Následující cesty vedou k některým důležitým protokolům a artefaktům. Na tyto informace odkazujeme v tomto článku.

Azure Cloud Services

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

Virtuální počítače

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

Data metrik se nezobrazují na webu Azure Portal

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

PartitionKey V této tabulce je ID prostředku, virtuální počítač nebo škálovací sada virtuálních počítačů. RowKey je název metriky. Označuje se také jako název čítače výkonu.

Pokud je ID prostředku nesprávné, zkontrolujteId prostředkumetrik konfigurace>diagnostiky> a zjistěte, jestli je ID prostředku správně nastavené.

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

  • \Processor(_Total)% času procesoru
  • \Memory\Available Bytes
  • \ASP.NET Applications(Total)\Requests/sec
  • \ASP.NET Applications(Total)\Errors Total/Sec
  • \ASP.NET\Požadavky ve frontě
  • \ASP.NET\Zamítnuté žádosti
  • \Processor(w3wp)% Času procesoru
  • \Process(w3wp)\Private Bytes
  • \Process(WaIISHost)% času procesoru
  • \Process(WaIISHost)\Private Bytes
  • \Process(WaWorkerHost)% času procesoru
  • \Process(WaWorkerHost)\Private Bytes
  • \Memory\Page Faults/s
  • .NET CLR Memory(Global)% time in GC
  • \LogicalDisk(C:)\Bajty zápisu na disk/s
  • \LogicalDisk(C:)\Bajty čtení disku/s
  • \LogicalDisk(D:)\Bajty zápisu na disk/s
  • \LogicalDisk(D:)\Bajty pro čtení disku/s

Pokud je konfigurace nastavená správně, ale stále se nezobrazují data metrik, s řešením potíží vám pomůžou následující pokyny.

Azure Diagnostics se nespustí

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

Pokud tyto protokoly indikují Monitoring Agent not reporting success after launch, znamená to, že při spuštění MonAgentHost.exedošlo k chybě . Prohlédněte si protokoly v umístění uvedeném pro MonAgentHost soubor protokolu v předchozí části Virtuální počítače.

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 negativní ukončovací kód, podívejte se na tabulku ukončovací kód v části Reference.

Diagnostická data se do Azure Storage nezaprotokolují.

Zjistěte, jestli se nezobrazují žádná data nebo jestli se zobrazí nějaká data.

Protokoly infrastruktury diagnostiky

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

Nezobrazí se žádná data.

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

Ř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.exe a MonAgentCore.exe . Pokud nejsou spuštěné, postupujte podle pokynů v tématu Azure Diagnostics se nespustí.

Pokud jsou procesy spuštěné, přejděte do části Jsou data zachycena místně? a postupujte podle pokynů tam.

Pokud problém přetrvává, zkuste:

  1. Odinstalujte agenta.
  2. Odeberte adresář C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics.
  3. Nainstalujte agenta znovu.

Chybí část dat.

Pokud získáte nějaká data, ale ne všechna, znamená to, že kanál shromažďování/přenosu dat je správně nastavený. Pokud chcete problém zúžit, postupujte podle uvedených 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 souboru do konfiguračního souboru aplikace Informace o nastavení naslouchacího procesu textu najdete v tématu Vytvoření a inicializace naslouchacích procesů trasování. Ujistěte se, <trace> že element obsahuje <trace autoflush="true">. Pokud nevidíte generování protokolů trasování, přečtěte si část Další informace o chybějících protokolech trasování.
  • Trasování událostí pro Windows (ETW): Vzdálený přístup k virtuálnímu počítači a instalace nástroje PerfView. V Nástroji PerfView spusťtepříkaz>uživatele souboru>Listen etwprovder1>etwprovider2 atd. V příkazu Listen se rozlišují malá a velká písmena a mezi seznamem zprostředkovatelů trasování událostí pro Windows oddělené čárkami nejsou mezery. Pokud se příkaz nepodaří spustit, vyberte Protokol v pravém dolním rohu nástroje PerfView a podívejte se, co se pokusilo spustit a jaký byl výsledek. Za předpokladu, že je vstup správný, otevře se nové okno. Za několik sekund uvidíte trasování trasování událostí pro Windows.
  • Protokoly událostí: Vzdálený přístup k virtuálnímu počítači. Otevřete Prohlížeč událostí a ujistěte se, že události existují.

Zaznamenávají se data místně?

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

Například čítače výkonu se shromažďují v PerformanceCountersTable.tsf. Protokoly událostí se shromažďují v souboru WindowsEventLogsTable.tsf. Podle 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, která se vygenerovala pro MonitoringAgent MaConfig.xml. Ověřte, že existuje oddíl, který popisuje příslušný zdroj protokolu. Pak ověřte, že se neztratil při překladu mezi konfigurací diagnostiky a agentem monitorování.

Přenášejí se data?

Pokud jste ověřili, že se data zachytávají místně, ale pořád je nevidíte ve svém účtu úložiště, postupujte takto:

  • Ověřte, že jste zadali správný účet úložiště a že jste nepřevedli klíče pro daný účet úložiště. V případě azure Cloud Services uživatelé někdy neaktualizovat useDevelopmentStorage=true.
  • Ověřte správnost zadaného účtu úložiště. Ujistěte se, že nemáte omezení sítě, která brání komponentám v přístupu ke koncovým bodům 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 pokusit se něco napsat do stejného účtu úložiště sami.
  • Nakonec se můžete podívat, jaká selhání hlásí agent monitorování. Agent monitorování zapisuje své protokoly do souboru maeventtable.tsf, který se nachází v místním úložišti pro diagnostická data. Tento soubor otevřete podle pokynů v části Extrakce místního protokolu . Pak se pokuste zjistit, jestli nedochází errors k chybám při čtení místních souborů, které se zapisují do úložiště.

Zachytávání a archivace protokolů

Pokud uvažujete o kontaktování podpory, první věcí, kterou vás může požádat, je shromáždit protokoly z vašeho 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 pro shromažďování protokolů. Vygeneruje soubor .zip 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 Trasování událostí pro windows, se pojmenují 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;

Tady je 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 vygeneruje čtyři tabulky:

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

Reference

Podívejte se na následující odkazy.

Kontrola konfigurace rozšíření diagnostiky

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

Případně přejděte ke vzdálené ploše počítače a podívejte se na konfigurační soubor diagnostiky, který je popsaný v části Cesta k artefaktům protokolu.

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

Pokud hledáte na virtuálním počítači a je k dispozici pole WadCfg , znamená to, že konfigurace je ve formátu JSON. Pokud je pole xmlCfg k dispozici, znamená to, že konfigurace je v XML a je zakódovaná jako base64. Pokud chcete zobrazit kód XML načtený diagnostikou, musíte ho dekódovat .

Pokud pro roli cloudové služby vyberete konfiguraci z disku, budou data kódovaná jako base64. Abyste viděli KÓD XML načtený diagnostikou, budete ho muset dekódovat .

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 Soubor rcf nelze načíst.

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

-3 Konfigurační soubor diagnostiky nejde načíst.

Řešení: Příčinou je, že konfigurační soubor neprošel ověřením schématu. Řešením je poskytnout konfigurační soubor, který je v souladu se schématem.

-4 Jiná instance diagnostiky agenta monitorování už používá adresář místních prostředků.

Řešení: Zadejte jinou hodnotu 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 se na virtuálním počítači ručně vyvolá modul plug-in agenta hosta.

-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 je k dispozici dostatek systémových prostředků pro spouštění nových procesů.

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

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

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

Řešení: Ověřte, že je k dispozici dostatek systémových prostředků 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 je k dispozici dostatek systémových prostředků pro spouštění nových procesů.

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

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

-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 Diagnostika na virtuálním počítači ručně vyvolán nesprávně.

-106 Konfigurační soubor diagnostiky nelze přečíst.

Příčinou je, že konfigurační soubor neprošel ověřením schématu.

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

-107 Adresář prostředků předaný 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 Diagnostika ručně vyvolá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 Diagnostika ručně vyvolán s neplatným konfiguračním souborem.

-111 Agenta monitorování nelze spustit.

Řešení: Ověřte, že je k dispozici dostatek systémových prostředků.

-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 převést na soubor .csv následujícím způsobem:

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

Nový soubor s názvem <relevantLogFile>.csv se vytvoří ve stejné cestě jako odpovídající .tsf soubor.

Poznámka

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

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

Poznámka

Následující informace platí hlavně pro Azure Cloud Services, pokud jste nenakonfigurovali DiagnosticsMonitorTraceListener v aplikaci, která běží na virtuálním počítači IaaS (infrastruktura jako služba).

  • Ujistěte se, že je v web.config nebo app.config nakonfigurovaný DiagnosticMonitorTraceListener . Ve výchozím nastavení se konfiguruje v projektech cloudových služeb. Někteří zákazníci ho ale okomentují, což způsobí, že diagnostika neshromáždí příkazy trasování.
  • Pokud se protokoly nezapisují z metody OnStart nebo Run , ujistěte se, že diagnosticMonitorTraceListener je v app.config. Ve výchozím nastavení je v web.config, ale to platí jenom pro kód spuštěný v w3wp.exe. Takže 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 skutečně 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žijete symbol podmíněné kompilace TRACE. K tomuto běžnému problému dochází při vytváření projektu pomocí nástroje MSBuild.

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

Následující známé problémy mají zmírnění rizik.

Závislost .NET 4.5

Rozšíření Azure Diagnostics pro Windows má závislost modulu runtime na rozhraní .NET Framework 4.5 nebo novějším. V době psaní tohoto článku mají všechny počítače zřízené pro Azure Cloud Services a 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í Azure Diagnostics pro Windows na počítači, který nemá .NET 4.5 nebo novější. K této situaci dochází při vytváření počítače ze staré image nebo snímku nebo při použití vlastního disku.

Tento problém se obecně manifestuje jako ukončovací kód 255 při spuštění DiagnosticsPluginLauncher.exe. K selhání 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ší.

Data čítačů výkonu jsou dostupná 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 nevidíte čítače výkonu a víte, že se data generují, protože jsou dostupná v úložišti, nezapomeňte zkontrolovat:

  • Určuje, jestli mají data v úložišti názvy čítačů v angličtině. Pokud názvy čítačů nejsou v angličtině, graf metrik portálu je nerozpozná.

    • Zmírnění rizik: Změňte jazyk počítače na angličtinu pro systémové účty. Uděláte to tak, že vyberete Ovládací panely>Region>Nastavení kopírování pro správu>. Pak zrušte zaškrtnutí úvodní obrazovky a systémových účtů , aby se na systémový účet nepoužíl vlastní jazyk.
  • Pokud v názvech čítačů výkonu používáte zástupné cardy (*), nemůže portál při odesílání čítačů výkonu do jímky služby Azure Storage korelovat nakonfigurovaný a shromážděný čítač.

    • Zmírnění rizik: Abyste měli jistotu, že můžete používat zástupné znaky a nechat portál rozbalit (*), nasměrujte čítače výkonu do jímky Služby Azure Monitor.