Azure Diagnostics-felsökning
I den här artikeln beskrivs felsökningsinformation som är relevant för användning av Azure Diagnostics. Mer information om Azure Diagnostics finns i Azure Diagnostics översikt.
Logiska komponenter
Startprogram för diagnostikplugin (DiagnosticsPluginLauncher.exe): Startar Azure Diagnostics tillägget. Fungerar som startpunktsprocessen.
Plugin-program för diagnostik (DiagnosticsPlugin.exe): Konfigurerar, startar och hanterar övervakningsagentens livslängd. Det är huvudprocessen som startas av startprogrammet.
Övervakningsagent (MonAgent*.exe processer): Övervakar, samlar in och överför diagnostikdata.
Logg-/artefaktsökvägar
Här följer sökvägarna till några viktiga loggar och artefakter. Vi hänvisar till den här informationen i resten av dokumentet.
Azure Cloud Services
Artefakt | Sökväg |
---|---|
Azure Diagnostics konfigurationsfil | %SystemDrive%\Packages\Plugins\Microsoft. Azure.Diagnostics.PaaSDiagnostics-version<>\Config.txt |
Loggfiler | C:\Logs\Plugins\Microsoft. Azure.Diagnostics.PaaSDiagnostics-version<>\ |
Lokalt lager för diagnostikdata | C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>. DiagnosticStore\WAD0107\Tables |
Övervakningsagentens konfigurationsfil | C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>.DiagnosticStore\WAD0107\Configuration\MaConfig.xml |
Azure Diagnostics tilläggspaket | %SystemDrive%\Packages\Plugins\Microsoft. Azure.Diagnostics.PaaSDiagnostics-version<> |
Sökväg för logginsamlingsverktyg | %SystemDrive%\Packages\GuestAgent\ |
MonAgentHost-loggfil | C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>. DiagnosticStore\WAD0107\Configuration\MonAgentHost.<>seq_num.log |
Virtuella datorer
Artefakt | Sökväg |
---|---|
Azure Diagnostics konfigurationsfil | C:\Packages\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics<version>\RuntimeSettings |
Loggfiler | C:\WindowsAzure\Logs\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\ |
Lokalt lager för diagnostikdata | C:\WindowsAzure\Logs\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\WAD0107\Tables |
Övervakningsagentens konfigurationsfil | C:\WindowsAzure\Logs\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\WAD0107\Configuration\MaConfig.xml |
Statusfil | C:\Packages\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics<version>\Status |
Azure Diagnostics tilläggspaket | C:\Packages\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<> |
Sökväg för logginsamlingsverktyg | C:\WindowsAzure\Logs\WaAppAgent.log |
MonAgentHost-loggfil | C:\WindowsAzure\Logs\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\WAD0107\Configuration\MonAgentHost.<>seq_num.log |
Måttdata visas inte i Azure-portalen
Azure Diagnostics innehåller måttdata som kan visas i Azure-Portal. Om du har problem med att se data i portalen kontrollerar du tabellen WADMetrics* i Azure Diagnostics-lagringskontot för att se om motsvarande måttposter finns där och se till att resursprovidern Microsoft. Insikter registreras.
Här är PartitionKey i tabellen resurs-ID, virtuell dator eller VM-skalningsuppsättning. RowKey är måttnamnet (kallas även prestandaräknarnamnet).
Om resurs-ID:t är felaktigt kontrollerar duResourceId för diagnostikkonfigurationsmått>> för att se om resurs-ID:t har angetts korrekt.
Om det inte finns några data för det specifika måttet kontrollerar duPrestandaräknare för diagnostikkonfiguration> för att se om måttet (prestandaräknaren) ingår. Vi aktiverar följande räknare som standard:
- \Processor(_Total)% processortid
- \Memory\Tillgängliga byte
- \ASP.NET Applications(Total)\Requests/Sec
- \ASP.NET Applications(Total)\Errors Total/s
- \ASP.NET\Begäranden i kö
- \ASP.NET\Begäranden avvisades
- \Processor(w3wp)% processortid
- \Process(w3wp)\Privata byte
- \Process(WaIISHost)% processortid
- \Process(WaIISHost)\Privata byte
- \Process(WaWorkerHost)% processortid
- \Process(WaWorkerHost)\Privata byte
- \Minne\Sidfel/s
- .NET CLR Memory(Global)% Tid i GC
- \LogicalDisk(C:)\Disk Write Bytes/s
- \LogicalDisk(C:)\Disk Read Bytes/s
- \LogicalDisk(D:)\Disk Write Bytes/s
- \LogicalDisk(D:)\Disk Read Bytes/s
Om konfigurationen är korrekt inställd men du fortfarande inte kan se måttdata kan du använda följande riktlinjer för att felsöka.
Azure Diagnostics startar inte
Information om varför Azure Diagnostics inte kunde starta finns i filerna DiagnosticsPluginLauncher.log och DiagnosticsPlugin.log på loggfilernas plats som angavs tidigare.
Om de här loggarna anger Monitoring Agent not reporting success after launch
innebär det att det uppstod ett fel när MonAgentHost.exe skulle startas. Titta på loggarna på den plats som anges för MonAgentHost log file
i föregående avsnitt.
Den sista raden i loggfilerna innehåller slutkoden.
DiagnosticsPluginLauncher.exe Information: 0 : [4/16/2016 6:24:15 AM] DiagnosticPlugin exited with code 0
Om du hittar en negativ slutkod kan du läsa tabellen slutkod i avsnittet Referenser.
Diagnostikdata loggas inte till Azure Storage
Kontrollera om inga data visas eller om vissa data visas.
Loggar för diagnostikinfrastruktur
Diagnostik loggar alla fel i loggarna för diagnostikinfrastrukturen. Kontrollera att du har aktiverat avbildningen av diagnostikinfrastrukturloggar i konfigurationen. Sedan kan du snabbt leta efter relevanta fel som visas i DiagnosticInfrastructureLogsTable
tabellen i ditt konfigurerade lagringskonto.
Inga data visas
Den vanligaste orsaken till att händelsedata inte visas alls är att lagringskontoinformationen har definierats felaktigt.
Lösning: Korrigera diagnostikkonfigurationen och installera om Diagnostik.
Om lagringskontot är korrekt konfigurerat fjärråtkomst till datorn och kontrollera att DiagnosticsPlugin.exe och MonAgentCore.exe körs. Om de inte körs följer du stegen i Azure Diagnostics startar inte.
Om processerna körs går du till Hämtas data lokalt och följer instruktionerna där.
Om detta inte löser problemet kan du försöka:
- Avinstallera agenten
- Ta bort katalogen C:\WindowsAzure\Logs\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics
- Installera agenten igen
En del av data saknas
Om du hämtar vissa data, men inte alla, innebär det att datainsamlingen/överföringspipelinen har angetts korrekt. Följ underavsnitten här för att begränsa problemet.
Är samlingen konfigurerad?
Diagnostikkonfigurationen innehåller instruktioner för en viss typ av data som ska samlas in. Granska konfigurationen för att kontrollera att du bara letar efter data som du har konfigurerat för samlingen.
Genererar värden data?
Prestandaräknare: Öppna perfmon och kontrollera räknaren.
Spårningsloggar: Fjärråtkomst till den virtuella datorn och lägg till en TextWriterTraceListener i appens konfigurationsfil. Se https://msdn.microsoft.com/library/sk36c28t.aspx för att konfigurera textlyssnaren. Kontrollera att elementet
<trace>
har<trace autoflush="true">
.
Om du inte ser spårningsloggar som genereras kan du läsa Mer om saknade spårningsloggar.ETW-spårningar: Fjärråtkomst till den virtuella datorn och installera PerfView. I PerfView kör dukommandot>File> UserListen etwprovder1>etwprovider2 och så vidare. Kommandot Lyssna är skiftlägeskänsligt och det kan inte finnas blanksteg mellan den kommaavgränsade listan över ETW-providers. Om kommandot inte kan köras kan du välja knappen Logg längst ned till höger i verktyget Perfview för att se vad som försökte köras och vad resultatet blev. Om indata är korrekta visas ett nytt fönster. Inom några sekunder börjar du se ETW-spårningar.
Händelseloggar: Fjärråtkomst till den virtuella datorn. Öppna
Event Viewer
och kontrollera sedan att händelserna finns.
Samlas data in lokalt?
Kontrollera sedan att data hämtas lokalt.
Data lagras lokalt i *.tsf
filer i det lokala arkivet för diagnostikdata. Olika typer av loggar samlas in i olika .tsf
filer. Namnen liknar tabellnamnen i Azure Storage.
Till exempel Performance Counters
samlas in i PerformanceCountersTable.tsf
. Händelseloggar samlas in i WindowsEventLogsTable.tsf
. Använd anvisningarna i avsnittet Lokal loggextrahering för att öppna de lokala samlingsfilerna och kontrollera att de samlas in på disken.
Om du inte ser loggar som samlas in lokalt och redan har verifierat att värden genererar data har du förmodligen ett konfigurationsproblem. Granska konfigurationen noggrant.
Granska även konfigurationen som genererades för MonitoringAgent MaConfig.xml. Kontrollera att det finns ett avsnitt som beskriver relevant loggkälla. Kontrollera sedan att den inte går förlorad i översättningen mellan diagnostikkonfigurationen och konfigurationen av övervakningsagenten.
Överförs data?
Om du har kontrollerat att data hämtas lokalt, men du fortfarande inte ser dem i ditt lagringskonto, gör du följande:
Kontrollera att du har angett ett korrekt lagringskonto och att du inte har återställt nycklar för det angivna lagringskontot. För Azure Serviços de Nuvem ser vi ibland att personer inte uppdaterar
useDevelopmentStorage=true
.Kontrollera att det angivna lagringskontot är korrekt. Kontrollera att du inte har nätverksbegränsningar som förhindrar att komponenterna når offentliga lagringsslutpunkter. Ett sätt att göra det är att fjärråtkomst till datorn och sedan försöka skriva något till samma lagringskonto själv.
Slutligen kan du titta på vilka fel som rapporteras av övervakningsagenten. Övervakningsagenten skriver sina loggar i
maeventtable.tsf
, som finns i det lokala arkivet för diagnostikdata. Följ anvisningarna i avsnittet Lokal loggextrahering för att öppna den här filen. Försök sedan ta reda på om det finnserrors
som indikerar fel vid läsning till lokala filer som skrivs till lagring.
Samla in och arkivera loggar
Om du funderar på att kontakta supporten kan de be dig att samla in loggar från din dator. Du kan spara tid genom att göra det själv. Kör verktyget på loggsamlingens CollectGuestLogs.exe
verktygssökväg. Den genererar en .zip fil med alla relevanta Azure-loggar i samma mapp.
Det gick inte att hitta diagnostikdatatabeller
Tabellerna i Azure Storage som innehåller ETW-händelser namnges med hjälp av följande kod:
if (String.IsNullOrEmpty(eventDestination)) {
if (e == "DefaultEvents")
tableName = "WADDefault" + MD5(provider);
else
tableName = "WADEvent" + MD5(provider) + eventId;
}
else
tableName = "WAD" + eventDestination;
Här är ett exempel:
<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"
}
}
]
Den här koden genererar fyra tabeller:
Händelse | Tabellnamn |
---|---|
provider="prov1" <Händelse-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 |
Referenser
Så här kontrollerar du konfigurationen av diagnostiktillägget
Det enklaste sättet att kontrollera tilläggskonfigurationen är att gå till Azure Resource Explorer och sedan gå till den virtuella datorn eller molntjänsten där Azure Diagnostics tillägget (IaaSDiagnostics/PaaDiagnostics) finns.
Du kan också fjärrskrivbord till datorn och titta på Azure Diagnostics-konfigurationsfilen som beskrivs i avsnittet Log artifacts path (Sökväg till loggartefakter).
I båda fallen söker du efter Microsoft. Azure.Diagnostics och sedan för fältet xmlCfg eller WadCfg.
Om du söker på en virtuell dator och fältet WadCfg finns innebär det att konfigurationen är i JSON-format. Om xmlCfg-fältet finns innebär det att konfigurationen är i XML och är base64-kodad. Du måste avkoda den för att se DEN XML som lästes in av Diagnostik.
Om du väljer konfigurationen från disken för molntjänstrollen är data base64-kodade, så du måste avkoda dem för att se DEN XML som lästes in av Diagnostik.
slutkoder för Azure Diagnostics plugin-program
Plugin-programmet returnerar följande slutkoder:
Slutkod | Beskrivning |
---|---|
0 | Åtgärden lyckades. |
-1 | Allmänt fel. |
-2 | Det går inte att läsa in rcf-filen. Det här interna felet bör bara inträffa om plugin-startprogrammet för gästagenten anropas manuellt felaktigt på den virtuella datorn. |
-3 | Det går inte att läsa in diagnostikkonfigurationsfilen. Lösning: Orsakas av att en konfigurationsfil inte skickar schemavalidering. Lösningen är att tillhandahålla en konfigurationsfil som uppfyller schemat. |
-4 | En annan instans av övervakningsagenten Diagnostik använder redan den lokala resurskatalogen. Lösning: Ange ett annat värde för LocalResourceDirectory. |
−6 | Startprogrammet för gästagentens plugin-program försökte starta Diagnostik med en ogiltig kommandorad. Det här interna felet bör bara inträffa om plugin-startprogrammet för gästagenten anropas manuellt felaktigt på den virtuella datorn. |
−10 | Plugin-programmet Diagnostics avslutades med ett ohanterat undantag. |
-11 | Gästagenten kunde inte skapa processen som ansvarar för att starta och övervaka övervakningsagenten. Lösning: Kontrollera att det finns tillräckligt med systemresurser för att starta nya processer. |
-101 | Ogiltiga argument när du anropar plugin-programmet Diagnostik. Det här interna felet bör bara inträffa om plugin-startprogrammet för gästagenten anropas manuellt felaktigt på den virtuella datorn. |
-102 | Plugin-processen kan inte initiera sig själv. Lösning: Kontrollera att det finns tillräckligt med systemresurser för att starta nya processer. |
-103 | Plugin-processen kan inte initiera sig själv. Mer specifikt kan den inte skapa loggningsobjektet. Lösning: Kontrollera att det finns tillräckligt med systemresurser för att starta nya processer. |
-104 | Det går inte att läsa in rcf-filen som tillhandahålls av gästagenten. Det här interna felet bör bara inträffa om plugin-startprogrammet för gästagenten anropas manuellt felaktigt på den virtuella datorn. |
-105 | Plugin-programmet Diagnostik kan inte öppna konfigurationsfilen Diagnostik. Det här interna felet bör bara inträffa om plugin-programmet Diagnostik anropas felaktigt på den virtuella datorn. |
-106 | Det går inte att läsa diagnostikkonfigurationsfilen. Orsakas av att en konfigurationsfil inte skickar schemavalidering. |
-107 | Resurskatalogen som skickas till övervakningsagenten är ogiltig. Det här interna felet bör bara inträffa om övervakningsagenten anropas manuellt felaktigt på den virtuella datorn. |
-108 | Det går inte att konvertera diagnostikkonfigurationsfilen till konfigurationsfilen för övervakningsagenten. Det här interna felet bör bara inträffa om plugin-programmet Diagnostik anropas manuellt med en ogiltig konfigurationsfil. |
-110 | Allmänt diagnostikkonfigurationsfel. Det här interna felet bör bara inträffa om plugin-programmet Diagnostik anropas manuellt med en ogiltig konfigurationsfil. |
-111 | Det går inte att starta övervakningsagenten. Lösning: Kontrollera att det finns tillräckligt med systemresurser. |
-112 | Allmänt fel |
Extrahering av lokal logg
Övervakningsagenten samlar in loggar och artefakter som .tsf
filer. Filen .tsf
kan inte läsas men du kan konvertera den till en .csv
på följande sätt:
<Azure diagnostics extension package>\Monitor\x64\table2csv.exe <relevantLogFile>.tsf
En ny fil med namnet <relevantLogFile>.csv
skapas i samma sökväg som motsvarande .tsf
fil.
Anteckning
Du behöver bara köra det här verktyget mot huvudfilen .tsf (till exempel PerformanceCountersTable.tsf). De medföljande filerna (till exempel PerformanceCountersTables_**001.tsf, PerformanceCountersTables_**002.tsf och så vidare) bearbetas automatiskt.
Mer om saknade spårningsloggar
Anteckning
Följande information gäller främst för Azure Serviços de Nuvem om du inte har konfigurerat DiagnosticsMonitorTraceListener för ett program som körs på din virtuella IaaS-dator.
Kontrollera att DiagnosticMonitorTraceListener har konfigurerats i web.config eller app.config. Detta konfigureras som standard i molntjänstprojekt. Vissa kunder kommenterar dock ut det, vilket gör att spårningsuttrycken inte samlas in av diagnostiken.
Om loggar inte skrivs från metoden OnStart eller Run kontrollerar du att DiagnosticMonitorTraceListener finns i app.config. Som standard finns den i web.config, men det gäller bara för kod som körs inom w3wp.exe. Så du behöver det i app.config för att samla in spårningar som körs i WaIISHost.exe.
Kontrollera att du använder Diagnostics.Trace.TraceXXX i stället för Diagnostics.Debug.WriteXXX. Felsökningsuttrycken tas bort från en versionsversion.
Kontrollera att den kompilerade koden faktiskt har raderna Diagnostics.Trace (använd Reflector, ildasm eller ILSpy för att verifiera). Diagnostics.Trace-kommandon tas bort från den kompilerade binärfilen såvida du inte använder symbolen trace conditional compil. Det här är ett vanligt problem som uppstår när du använder msbuild för att skapa ett projekt.
Kända problem och åtgärder
Här är en lista över kända problem med kända åtgärder:
1. .NET 4.5-beroende
Windows Azure Diagnostics-tillägget har ett körningsberoende för .NET 4.5-ramverket eller senare. I skrivande stund har alla datorer som etableras för Azure Serviços de Nuvem, samt alla officiella avbildningar som baseras på virtuella Azure-datorer, .NET 4.5 eller senare installerat.
Du kan fortfarande stöta på en situation där du försöker köra Windows Azure Diagnostics-tillägget på en dator som inte har .NET 4.5 eller senare. Detta inträffar när du skapar datorn från en gammal avbildning eller ögonblicksbild eller när du tar med en egen anpassad disk.
Detta visas vanligtvis som en slutkod 255 när DiagnosticsPluginLauncher.exe körs. Felet inträffar på grund av följande ohanterade undantag:
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
Lindring: Installera .NET 4.5 eller senare på datorn.
2. Prestandaräknardata är tillgängliga i lagringen men visas inte i portalen
Portalupplevelsen på de virtuella datorerna visar vissa prestandaräknare som standard. Om du inte ser prestandaräknarna och du vet att data genereras eftersom de är tillgängliga i lagringen kontrollerar du följande:
Om data i lagringen har räknarnamn på engelska. Om räknarnamnen inte är på engelska kan inte portalens måttdiagram identifiera det. Åtgärd: Ändra datorns språk till engelska för systemkonton. Det gör du genom att välja لوحة التحكم>Region> Administrativakopieringsinställningar>. Avmarkera sedan välkomstskärmen och systemkonton så att det anpassade språket inte tillämpas på systemkontot.
Om du använder jokertecken (*) i prestandaräknarnas namn kan portalen inte korrelera den konfigurerade och insamlade räknaren när prestandaräknarna skickas till Azure Storage-mottagaren. Åtgärd: För att se till att du kan använda jokertecken och låta portalen expandera (*) dirigerar du dina prestandaräknare till Azure Monitor-mottagaren.