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 Azure Diagnostics översikt.
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 ö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
Följande sökvägar leder till några viktiga loggar och artefakter. Vi hänvisar till den här informationen i den här artikeln.
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 arkiv 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 |
---|---|
Azure Diagnostics konfigurationsfil | C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\RuntimeSettings |
Loggfiler | C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\ |
Lokalt arkiv 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 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 du Prestanda 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 avvisade
- \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 filerna DiagnosticsPluginLauncher.log och DiagnosticsPlugin.log 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.exeskulle 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 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 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 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 inte startar.
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 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. 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ändelser för Windows (ETW): Fjärråtkomst till den virtuella datorn och installera Verktyget 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 väljer du Logga längst ned till höger i verktyget PerfView 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 visas 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 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.
Prestandaräknare samlas till exempel 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 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 återställt nycklar för det angivna lagringskontot. För Azure Cloud Services uppdaterar
useDevelopmentStorage=true
användarna ibland inte . - 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. Öppna filen genom att följa anvisningarna i avsnittet Lokal loggextrahering . Försök sedan ta reda på om det finns
errors
som indikerar fel vid läsning till lokala filer som skrivs 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:
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
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) finns.
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 innebär det att konfigurationen är i JSON-format. Om fältet xmlCfg 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. Du måste avkoda den för att se DEN XML som lästes in av Diagnostik.
Azure Diagnostics slutkoder för 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 | 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 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 vid anrop av 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älvt. Lösning: Kontrollera att det finns tillräckligt med systemresurser för att starta nya processer. |
-103 | Plugin-programmet kan inte initiera sig självt. 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 manuellt felaktigt på den virtuella datorn. |
-106 | Det går inte att läsa diagnostikkonfigurationsfilen. Orsakas av att en konfigurationsfil inte klarar 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 ska bara inträffa om plugin-programmet Diagnostik anropas manuellt med en ogiltig konfigurationsfil. |
-110 | Allmänt diagnostikkonfigurationsfel. Det här interna felet ska bara inträffa om plugin-programmet Diagnostik anropas manuellt med en ogiltig konfigurationsfil. |
-111 | Det gick inte att starta övervakningsagenten. Lösning: Kontrollera att det finns tillräckligt med systemresurser. |
-112 | Allmänt fel. |
Extrahering av lokala loggar
Ö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.
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
) bearbetas automatiskt.
Mer om saknade spårningsloggar
Anteckning
Följande information gäller främst för Azure Cloud Services om du inte har konfigurerat DiagnosticsMonitorTraceListener
för 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. Det 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. 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ökningsinstruktionerna 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 den villkorliga kompileringssymbolen 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 för .NET Framework 4.5 eller senare. I skrivande stund har .NET 4.5 eller senare installerats på alla datorer som har etablerats för Azure Cloud Services och alla officiella avbildningar som baseras på virtuella Azure-datorer.
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
Lindring: Installera .NET 4.5 eller senare på datorn.
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 finns på engelska känner inte portalmåttdiagrammet igen det.
- Lösning: Ändra datorns språk till engelska för systemkonton. Det gör du genom att välja Kontrollpanelen>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.
- Lösning: 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.