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

  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. 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=trueanvä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.

Lösning: Ange en konfigurationsfil som uppfyller schemat. Mer information finns i Kontrollera konfigurationen av diagnostiktillägget.

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