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 launchinnebä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:

  1. Avinstallera agenten
  2. Ta bort katalogen C:\WindowsAzure\Logs\Plugins\Microsoft. Azure.Diagnostics.IaaSDiagnostics
  3. 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 Vieweroch 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 finns errors 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.

Lösning: Ange en konfigurationsfil som följer schemat. Mer information finns i Så här kontrollerar du konfiguration av diagnostiktillägg.

-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.