Řešení potíží se službou Azure Diagnostics
Tento článek popisuje informace o řešení potíží, které jsou relevantní pro použití diagnostiky Azure. Další informace o diagnostice najdete v přehledu diagnostiky Azure.
Logické komponenty
Součásti jsou:
- Spouštěč diagnostických modulů plug-in (DiagnosticsPluginLauncher.exe):Spustí rozšíření Diagnostika. Slouží jako proces vstupního bodu.
- Diagnostický modul plug-in (DiagnosticsPlugin.exe): Konfiguruje, spouští a spravuje životnost agenta monitorování. Je to hlavní proces, který spouštěč spustil.
- Agent monitorování (Procesy MonAgent*.exe): Monitory, 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 se odkazujeme v celém tomto článku.
Azure Cloud Services
Artefakt | Cesta |
---|---|
Konfigurační soubor Azure Diagnostics | %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\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<verze> |
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 |
---|---|
Konfigurační soubor Azure Diagnostics | 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 na webu Azure Portal. Pokud máte problémy se zobrazením dat na portálu, zkontrolujte WADMetrics\*
tabulku v účtu úložiště diagnostiky a zkontrolujte, 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é, zkontrolujte ID prostředku diagnostické metriky konfigurace>>a zkontrolujte, jestli je ID prostředku správně nastavené.
Pokud pro konkrétní metriku nejsou žádná data, zkontrolujte, jestli je metrika (čítač výkonu) zahrnutá, zkontrolujte nástroj PerformanceCounter konfigurace>diagnostiky. Ve výchozím nastavení povolíme následující čítače:
- \Processor(_Total)% čas 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)% čas 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 (Globální)% čas v GC
- \Logický disk(C:)\Bajty zápisu na disk/s
- \LogicalDisk(C:)\Bajty čtení disku/s
- \Logický disk(D:)\Bajty zápisu na disk/s
- \Logický disk(D:)\Bajty čtení disku/s
Pokud je konfigurace nastavená správně, ale stále se vám 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 diagnostika nespuskla, najdete v DiagnosticsPluginLauncher.log a DiagnosticsPlugin.log souborech v umístění souborů protokolu, které jste zadali dříve.
Pokud tyto protokoly naznačují Monitoring Agent not reporting success after launch
, znamená to, že došlo k selhání spuštění MonAgentHost.exe. Podívejte se na protokoly v umístění, které je uvedené 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 záporný ukončovací kód, podívejte se na tabulku ukončovacího kódu v části Reference.
Diagnostická data se do Služby Azure Storage nezaprotokolují
Určete, jestli se žádná z dat nezobrazí nebo jestli se některá data zobrazí.
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 tabulce v DiagnosticInfrastructureLogsTable
nakonfigurovaných účtech úložiště.
Nezobrazují se žádná data
Nejčastějším důvodem, proč se data událostí vůbec nezobrazují, je to, ž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.exe a MonAgentCore.exe . Pokud nejsou spuštěné, postupujte podle kroků v Diagnostice Azure, které se nespustí.
Pokud jsou procesy spuštěné, přejděte do části Dochází k zachycení dat místně? a postupujte podle pokynů v něm.
Pokud problém přetrvává, zkuste:
- Odinstalujte agenta.
- Odeberte adresář C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics.
- Nainstalujte agenta znovu.
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 zde uvedených pododdílů.
Je kolekce nakonfigurovaná?
Konfigurace diagnostiky obsahuje pokyny ke shromažďování konkrétního typu dat. Zkontrolujte konfiguraci a ověřte, že hledáte jenom data, která jste pro kolekci nakonfigurovali.
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. Pokud chcete nastavit naslouchací proces textu, přečtěte si téma Vytvoření a inicializace naslouchacích procesů trasování. Ujistěte se, že<trace>
prvek obsahuje<trace autoflush="true">
. Pokud se vygenerované protokoly trasování nezobrazují, 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ťte příkaz User>File>Listen etwprovder1>etwprovider2 atd. Příkaz Listen rozlišuje malá a velká písmena a mezi čárkami odděleným seznamem poskytovatelů Trasování událostí pro Windows nesmí být mezery. Pokud se příkaz nepodaří spustit, vyberte v pravém dolním rohu nástroje PerfView protokol, abyste zjistili, 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í 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í.
Jsou data zachycená místně?
Dále se ujistěte, že se data zaznamenávají místně. Data jsou místně uložená 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í ve 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 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ě se stále nezobrazují, 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ě. V případě Azure Cloud Services se někdy 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í komponentám v dosažení 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 zkuste 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 protokoly do maeventtable.tsf, který se nachází v místním úložišti pro diagnostická data. Pokud chcete tento soubor otevřít, 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ů zapisování 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, jsou pojmenované 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 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
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í Diagnostika (IaaSDiagnostics / PaaDiagnostics).
Případně vzdálená plocha do počítače a podívejte se na konfigurační soubor diagnostiky 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 kódována base64. Abyste viděli XML načtený diagnostikou, musíte ho dekódovat.
Pokud pro roli cloudové služby vyberete konfiguraci z disku, data jsou zakódovaná v base64. Budete ho muset dekódovat, aby se zobrazil kód XML načtený diagnostikou.
Ukončovací kódy modulu plug-in Azure Diagnostics
Modul plug-in vrátí následující ukončovací kódy:
Ukončovací kód | Popis |
---|---|
0 | Akce byla úspěšná. |
-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 se na virtuálním počítači ručně vyvolá ručně modul plug-in plug-in agenta hosta. |
-3 | Nelze načíst konfigurační soubor diagnostiky. Řešení: Příčinou konfiguračního souboru není předávání ověřování schématu. Řešením je poskytnout konfigurační soubor, který vyhovuje schématu. |
-4 | Další instance diagnostiky agenta monitorování 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 se na virtuálním počítači ručně vyvolá ručně modul plug-in 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 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 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á ručně modul plug-in plug-in agenta hosta. |
-102 | Proces modulu plug-in nemůže inicializovat sám sebe. Ř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 nemůže inicializovat sám sebe. 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 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á ručně modul plug-in 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 Diagnostiky 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ěřování schématu. |
-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 Diagnostika 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 Diagnostika vyvolán ručně s neplatným konfiguračním souborem. |
-111 | Agent monitorování nejde 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 takto:
<Azure diagnostics extension package>\Monitor\x64\table2csv.exe <relevantLogFile>.tsf
Volaný <relevantLogFile>.csv
nový soubor se vytvoří ve stejné cestě jako odpovídající .tsf
soubor.
Poznámka:
Tento nástroj musíte 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í většinou pro Azure Cloud Services, pokud jste nenakonfigurovali DiagnosticsMonitorTraceListener
aplikaci, která běží na virtuálním počítači IaaS (Infrastruktura jako služba).
- Ujistěte se, že je diagnosticmonitorTraceListener nakonfigurovaný v souboru web.config nebo app.config. Ve výchozím nastavení je nakonfigurovaná v projektech cloudových služeb. Někteří zákazníci ho ale okomentují, což způsobí, že diagnostické příkazy neshromáždí.
- Pokud se protokoly nezapisují z metody OnStart nebo Run , ujistěte se, že je diagnosticMonitorTraceListener v souboru app.config. Ve výchozím nastavení je v souboru web.config, ale to platí jenom pro kód spuštěný v rámci w3wp.exe. Proto ho potřebujete v souboru app.config k zachycení trasování spuštěných v WaIISHost.exe.
- Ujistěte se, že místo Diagnostics.Debug.WriteXXX používáte Diagnostics.Trace.TraceXXX. Příkazy Debug se odeberou z sestavení 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žíváte symbol podmíněné kompilace TRACE. K tomuto běžnému problému dochází, když k sestavení projektu používáte nástroj MSBuild.
Známé problémy a zmírnění rizik
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é .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žívání vlastního disku.
Tento problém se obvykle 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í rizik: Nainstalujte na počítač .NET 4.5 nebo novější.
Data čítačů výkonu jsou k dispozici v úložišti, ale nezobrazují se na portálu.
Prostředí portálu ve virtuálních počítačích zobrazuje ve výchozím nastavení určité čítače výkonu. Pokud se nezobrazují čítače výkonu a víte, že se data generují, protože jsou k dispozici v úložišti, nezapomeňte zkontrolovat:
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 nerozpozná.
- Zmírnění: Změna jazyka počítače na angličtinu pro systémové účty. Uděláte to tak, že vyberete Ovládací panely> Nastavení kopie pro správu>oblasti.> Potom zrušte zaškrtnutí úvodní obrazovky a systémových účtů , aby se pro systémový účet nepoužít vlastní jazyk.
Pokud v čítačích výkonu používáte zástupné čítače (*), portál nemůže 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žít zástupné cardy a portál rozbalit (*), směrujte čítače výkonu do jímky služby Azure Monitor.