Ö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 tabellen Perf
i Azure Monitor.
Nu ska vi köra en enkel fråga i tabellen Perf
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ärden i kolumnen CounterName
under de senaste 24 timmarna:
Räknaren % Processor Time
ger dig en förståelse för processoranvändningen eller processorns (Central Processing Unit) användning. 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:
Spalt | 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 operatornoch numeriska operatorer. |
Computer |
Dator som händelsen samlades in från. | Associera CPU-användning med en specifik dator. | summarize... by Computer För mer information, se för att sammanfatta operatören. |
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 för % Processor Time . |
where CounterName == "% Processor Time" Mer information finns i där operatorn och == (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 där operatorn och == (lika med) operatorn. |
CounterValue |
Mätningen som samlas in för räknaren. | Hämta prestandamått för prestandaräknaren för % Processor Time . |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Mer information finns i sammanfattningsoperatorn, och min(), max(), avg()och percentiler() aggregeringsfunktioner. |
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 rapporterar prestandaräknaren
% Processor Time
: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
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 percentilen
% 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 det
% 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 10% och 15%
% Processor Time
värden ä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 join
operatorn. För mer information, se 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 tabellen Heartbeat
, som vi såg i den första övningen?
Lösning:
Lägg till information från tabellen
Heartbeat
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ån tabellenHeartbeat
till föregående frågeresultat.Kolumnen
Computer
visas nu två gånger i frågeresultatet – en gång från frågan i tabellenPerf
och en gång från frågan i tabellenHeartbeat
. KolumnenComputer
från tabellenHeartbeat
har bytt namnComputer1
, 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.Ta bort kolumnen
Computer1
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.