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 diagnostik finns i Översikt över Azure Diagnostics.
Logiska komponenter
Komponenterna är:
- Plugin-startprogrammet för diagnostik (DiagnosticsPluginLauncher.exe): Startar diagnostiktillägget. Den fungerar som startpunktsprocess.
- Plugin-program för diagnostik (DiagnosticsPlugin.exe): Konfigurerar, startar och hanterar livslängden för övervakningsagenten. Det är huvudprocessen som startas av startprogrammet.
- Övervakningsagent (MonAgent*.exe processer): Övervakar, samlar in och överför diagnostikdata.
Logg-/artefaktsökvägar
Följande sökvägar leder till några viktiga loggar och artefakter. Vi refererar till den här informationen i den här artikeln.
Azure Cloud Services
Artefakt | Sökväg |
---|---|
Konfigurationsfil för Azure Diagnostics | %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 |
Övervakningsagentkonfigurationsfil | 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 till loggsamlingsverktyget | %SystemDrive%\Packages\GuestAgent\ |
MonAgentHost-loggfil | C:\Resources\Directory<CloudServiceDeploymentID>.<RoleName>. DiagnosticStore\WAD0107\Configuration\MonAgentHost.<>seq_num.log |
Virtuella datorer
Artefakt | Sökväg |
---|---|
Konfigurationsfil för Azure Diagnostics | 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 |
Övervakningsagentkonfigurationsfil | 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 till loggsamlingsverktyget | 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
Diagnostik tillhandahåller måttdata som kan visas i Azure Portal. Om du har problem med att se data i portalen kontrollerar du WADMetrics\*
tabellen i diagnostiklagringskontot för att se om motsvarande måttposter finns där och se till att resursprovidern Microsoft.Insights är registrerad.
PartitionKey
Här är tabellen resurs-ID, virtuell dator eller VM-skalningsuppsättning. RowKey
är måttnamnet. Det kallas även prestandaräknarens namn.
Om resurs-ID:t är felaktigt kontrollerar du ResourceId 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 du Prestandarä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/Sec
- \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 använder du följande riktlinjer för att felsöka.
Azure Diagnostics startar inte
Information om varför diagnostiken inte kunde starta finns i DiagnosticsPluginLauncher.log - och DiagnosticsPlugin.log-filerna på loggfilernas plats som angavs tidigare.
Om dessa loggar 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
loggfilen i föregående avsnitt "Virtuella datorer".
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 för 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 diagnostikinfrastruktur. Kontrollera att du har aktiverat insamlingen av loggar för diagnostikinfrastruktur i konfigurationen. Sedan kan du snabbt leta efter eventuella 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 kan du 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 anvisningarna där.
Om det fortfarande finns ett problem 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 datainsamlings-/överföringspipelinen är korrekt inställd. 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. Information om hur du konfigurerar textlyssnaren finns i Skapa och initiera spårningslyssnare. Kontrollera att elementet<trace>
har<trace autoflush="true">
. Om du inte ser spårningsloggar som genereras kan du läsa avsnittet Mer om saknade spårningsloggar. - Spårning av händelsespårning för Windows (ETW): Fjärråtkomst till den virtuella datorn och installation av PerfView-verktyget. I PerfView kör du filanvändarkommandot>>Listen etwprovder1>etwprovider2 och så vidare. Kommandot Lyssna är skiftlägeskänsligt och det kan inte finnas blanksteg mellan kommaavgränsad lista över ETW-providers. Om kommandot inte kan köras väljer du Logga längst ned till höger i PerfView-verktyget för att se vad som försökte köras och vad resultatet blev. Förutsatt att indata är korrekta öppnas ett nytt fönster. Om några sekunder ser du ETW-spårningar.
- Händelseloggar: Fjärråtkomst till den virtuella datorn. Öppna Loggboken och kontrollera att händelserna finns.
Samlas data in lokalt?
Kontrollera sedan att data samlas in 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.
Prestandaräknare samlas till exempel in i PerformanceCountersTable.tsf. Händelseloggar samlas in i WindowsEventLogsTable.tsf. Använd anvisningarna i avsnittet Extrahering av lokal logg 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 verifierat att data hämtas lokalt men du fortfarande inte ser dem i ditt lagringskonto följer du dessa steg:
- Kontrollera att du har angett ett korrekt lagringskonto och att du inte har rullat över nycklar för det angivna lagringskontot. För Azure Cloud Services uppdateras
useDevelopmentStorage=true
ibland inte användare. - 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 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 finns som indikerar att det inte går
errors
att läsa till lokala filer som skriver till lagring.
Avbildnings- och arkivloggar
Om du funderar på att kontakta supporten kan de be dig att samla in loggar från datorn. Du kan spara tid genom att göra det själv. CollectGuestLogs.exe
Kör verktyget på loggsamlingens 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:
Event | 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
Kolla in följande referenser
Kontrollera konfigurationen av diagnostiktillägget
Det enklaste sättet att kontrollera tilläggskonfigurationen är att gå till Azure Resource Explorer. Gå sedan till den virtuella datorn eller molntjänsten där diagnostiktillägget (IaaSDiagnostics/PaaDiagnostics) är.
Du kan också fjärrskrivbord till datorn och titta på konfigurationsfilen Diagnostik som beskrivs i avsnittet Log artifacts path (Sökväg till loggartefakter).
I båda fallen söker du efter Microsoft.Azure.Diagnostics och fältet xmlCfg eller WadCfg .
Om du söker på en virtuell dator och fältet WadCfg finns betyder det att konfigurationen är i JSON-format. Om xmlCfg-fältet finns innebär det att konfigurationen finns i XML och är base64-kodad. Du måste avkoda den för att se DEN XML som lästes in av Diagnostik.
För molntjänstrollen är data base64-kodade om du väljer konfigurationen från disken. Du måste avkoda den 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 | Klart! |
-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 Diagnostics använder redan den lokala resurskatalogen. Lösning: Ange ett annat värde för LocalResourceDirectory. |
-6 | Plugin-startprogrammet för gästagenten 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 Diagnostik avslutades med ett ohanterat undantag. |
-11 | Gästagenten kunde inte skapa den process 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-programmet kan inte initiera sig själv. Lösning: Kontrollera att det finns tillräckligt med systemresurser för att starta nya processer. |
-103 | Plugin-programmet kan inte initiera sig själv. Mer specifikt går det inte att 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 schemaverifiering. |
-107 | Resurskatalogen som skickas till övervakningsagenten är ogiltig. Det här interna felet bör bara inträffa om övervakningsagenten anropas felaktigt på den virtuella datorn manuellt. |
-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
är inte läsbar, 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.
Kommentar
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
) bearbetas automatiskt.
Mer om saknade spårningsloggar
Kommentar
Följande information gäller främst för Azure Cloud Services om du inte har konfigurerat DiagnosticsMonitorTraceListener
på ett program som körs på din virtuella IaaS-dator (infrastruktur som en tjänst).
- Kontrollera att DiagnosticMonitorTraceListener har konfigurerats i web.config eller app.config. Den konfigureras som standard i molntjänstprojekt. Vissa kunder kommenterar dock ut det, vilket gör att spårningsinstruktionerna inte samlas in av Diagnostik.
- 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 i 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ära filen om du inte använder symbolen för villkorlig kompilering av TRACE. Det här vanliga problemet uppstår när du använder MSBuild för att skapa ett projekt.
Kända problem och åtgärder
Följande kända problem har åtgärder.
.NET 4.5-beroende
Azure Diagnostics-tillägget för Windows har ett körningsberoende på .NET Framework 4.5 eller senare. I skrivande stund har alla datorer som etableras för Azure Cloud Services och alla officiella avbildningar som baseras på virtuella Azure-datorer .NET 4.5 eller senare installerats.
Det går fortfarande att stöta på en situation där du försöker köra Azure Diagnostics-tillägget för Windows på en dator som inte har .NET 4.5 eller senare. Den här situationen inträffar när du skapar datorn från en gammal avbildning eller ögonblicksbild, eller när du tar med en egen anpassad disk.
Det här problemet visas vanligtvis som slutkod 255 när du kör DiagnosticsPluginLauncher.exe. 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
Åtgärd: Installera .NET 4.5 eller senare på datorn.
Data för prestandaräknare ä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 kommer portalens måttdiagram inte att känna igen det.
- Åtgärd: Ändra datorns språk till engelska för systemkonton. Det gör du genom att välja Kontrollpanelen> Region>Administrativa kopieringsinställningar.> Rensa sedan välkomstskärmen och systemkonton så att det anpassade språket inte tillämpas på systemkontot.
Om du använder jokertecken (*) i prestandaräknarens 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.