Övning – Identifiera datorer med hög CPU-användning
Här skriver du KQL-frågor för att hämta och transformera data från Perf
tabellen för att få en förståelse för vilka datorer som har nått eller närmar sig sin totala beräkningskapacitet och vilka datorer som underutnyttas.
1. Ange mål
För att åtgärda prestandaproblem, åtgärda potentiella problem och identifiera möjligheter att arbeta mer effektivt vill du analysera användningen av virtuella datorer i din IT-miljö.
För att identifiera cpu-relaterade prestandaproblem och möjligheter att bli effektivare behöver du information om:
- Cpu-användningstrender för varje aktiv dator.
- CPU-användning av datorer vid högsta och tysta tider.
2. Utvärdera loggar
Windows- och Linux-agenter skickar prestandaräknare för maskinvarukomponenter, operativsystem och program som körs på övervakade datorer till Perf
tabellen i Azure Monitor.
Nu ska vi köra en enkel fråga i Perf
tabellen för att hämta loggar från de senaste 24 timmarna och få en uppfattning om tabellschemat och de data som tabellen innehåller:
Klicka för att köra frågan i Log Analytics-demomiljön
Perf // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day
Du kan se att kolumnerna TimeGenerated
, Computer
, ObjectName
, CounterName
, InstanceName
och CounterValue
innehåller data som är relevanta för vår analys.
Kolumnen ObjectName
visar namnen på alla objekt som Azure Monitor samlar in data från övervakade datorer för. Kolumnen CounterName
innehåller namnen på de olika prestandaräknare som Azure Monitor samlar in. Båda dessa kolumner innehåller många värden, varav många visas flera gånger. För att tydligt se de distinkta värdena i dessa kolumner och avgöra vilka räknare som är relevanta för den aktuella analysen ska vi köra den här frågan:
Klicka för att köra frågan i Log Analytics-demomiljön
Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values
Den här skärmbilden visar de distinkta kombinationerna av ObjectName
och CounterName
värdena i CounterName
kolumnen under de senaste 24 timmarna:
Räknaren % Processor Time
ger dig en förståelse för processoranvändningen eller central bearbetningsenhet (CPU). Det här är information du behöver!
Nu ska vi utvärdera hur vi kan använda dessa data och vilka KQL-åtgärder som kan hjälpa till att extrahera och transformera data:
Kolumn | beskrivning | Analysmål | Relaterade KQL-åtgärder |
---|---|---|---|
TimeGenerated |
Anger när den virtuella datorn genererade varje logg. | Definiera tidsomfånget för analysen. | where TimeGenerated > ago(1d) Mer information finns i ago(), där operatorn och numeriska operatorer. |
Computer |
Dator som händelsen samlades in från. | Associera CPU-användning med en specifik dator. | summarize... by Computer Mer information finns i sammanfatta operatorn. |
ObjectName |
Innehåller namnen på alla objekt som tabellen innehåller prestandadata för. | Övervaka processorns prestanda. | where ObjectName == "Processor" Mer information finns i operatorn == (lika med). |
CounterName |
Innehåller namnen på alla prestandaräknare i tabellen. | Övervaka prestandaräknaren % Processor Time . |
where CounterName == "% Processor Time" Mer information finns i var operatorn och == (är lika med) operatorn. |
InstanceName |
Visar en lista över övervakade instanser av det övervakade objektet. | Övervaka alla processorskärnor. | where InstanceName == "_Total" Mer information finns i var operatorn och == (är lika med) operatorn. |
CounterValue |
Mätningen som samlas in för räknaren. | Hämta prestandamått för prestandaräknaren % Processor Time . |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Mer information finns i sammanfatta operatorn och aggregeringsfunktionerna min(), max(), avg()och percentiles(). |
3. Skriv din fråga
Skriv en fråga som sammanfattar den genomsnittliga, lägsta och högsta CPU-användningen för alla datorer under den senaste dagen.
Hämta alla loggar som genererats under den senaste dagen som rapporterade prestandaräknaren
% Processor Time
:Klicka här om du vill köra frågan i Log Analytics-demomiljön.
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements
Den här frågan hämtar alla loggar relaterade till totalt antal processortidsmätningar från den senaste dagen.
Hitta de lägsta, högsta och genomsnittliga räknarvärdena och beräkna 90:e och 99:e percentilens räknarvärden för varje dator:
Klicka för att köra frågan i Log Analytics-demomiljön
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer
Resultatuppsättningen för den här frågan visar minsta, högsta, genomsnittliga, 90:e och 99:e percentilens
% Processor Time
räknarvärden för varje dator där det finns data på Log Analytics-arbetsytan.Filtrera frågeresultatet för poster där
% Processor Time
räknarvärdet är högre än 80 i det 90:e och 99:e percentilintervallet:Klicka för att köra frågan i Log Analytics-demomiljön
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 80
Resultatuppsättningen för den här frågan består av alla datorer där de översta värdena på 10 % och 15 %
% Processor Time
är över 80.
Utmaning: Lägga till operativsysteminformation från tabellen Pulsslag i frågeresultatet
Du kan ofta få en bättre förståelse för dina frågeresultat genom att korrelera information från en annan tabell till dina frågeresultat med hjälp av operatorn join
. Mer information finns i kopplingsoperatorn.
Kan du använda operatorn join
för att lägga till information om operativsystemet som körs på varje dator, som är tillgängligt i Heartbeat
tabellen, som vi såg i den första övningen?
Lösning:
Lägg till information från
Heartbeat
tabellen om operativsystemet som körs på var och en av datorerna i frågeresultatet:Klicka för att köra frågan i Log Analytics-demomiljön
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system
Den här iterationen av frågan lägger till kolumnerna
Computer
ochOSType
frånHeartbeat
tabellen i föregående frågeresultat.Kolumnen
Computer
visas nu två gånger i frågeresultatet – en gång från frågan iPerf
tabellen och en gång från frågan iHeartbeat
tabellen. KolumnenComputer
frånHeartbeat
tabellen har byttComputer1
namn, men de två tabellerna innehåller identiska data. Med båda kolumnerna kan du korrelera resultatet från de två tabellerna, men du kan nu filtrera bort den duplicerade kolumnen.Computer1
Ta bort kolumnen från frågeresultatet:Klicka för att köra frågan i Log Analytics-demomiljön
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system | project-away Computer1 // Removes the "Computer1" column from the query results
Resultatuppsättningen för den här frågan visar en lista över alla datorer som har nått sin fulla processorkapacitet och det operativsystem som körs på varje dator, vilket är användbart för ytterligare analys.