Oefening: machines met een hoog CPU-gebruik identificeren
Hier schrijft u KQL-query's om gegevens op te halen en te transformeren uit de Perf
tabel om inzicht te krijgen in welke machines de totale rekencapaciteit hebben bereikt of bijna zijn bereikt en welke machines worden onderbroken.
1. Doelstellingen instellen
Als u prestatieproblemen wilt oplossen, potentiële problemen wilt beperken en mogelijkheden wilt identificeren om efficiënter te werken, wilt u het CPU-gebruik (Central Processing Unit) van virtuele machines in uw IT-omgeving analyseren.
Als u prestatieproblemen en mogelijkheden voor CPU-gerelateerde prestaties wilt identificeren om efficiënter te worden, hebt u informatie nodig over:
- Trends in CPU-gebruik van elke actieve machine.
- CPU-gebruik van machines op piek- en stiltetijden.
2. Logboeken evalueren
Windows- en Linux-agents verzenden prestatiemeteritems van hardwareonderdelen, besturingssystemen en toepassingen die worden uitgevoerd op bewaakte machines naar de Perf
tabel in Azure Monitor.
Laten we een eenvoudige query uitvoeren op de Perf
tabel om logboeken uit de afgelopen 24 uur op te halen en een beeld te krijgen van het tabelschema en de gegevens die de tabel bevat:
Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving
Perf // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day
U kunt zien dat de TimeGenerated
kolommen , Computer
, ObjectName
en InstanceName
CounterName
CounterValue
kolommen gegevens bevatten die relevant zijn voor onze analyse.
De ObjectName
kolom bevat de namen van alle objecten waarvoor Azure Monitor gegevens verzamelt van bewaakte machines. De CounterName
kolom bevat de namen van de verschillende prestatiemeteritems die door Azure Monitor worden verzameld. Beide kolommen bevatten veel waarden, waarvan veel meerdere keren worden weergegeven. Als u duidelijk de afzonderlijke waarden in deze kolommen wilt zien en wilt bepalen welke tellers relevant zijn voor de huidige analyse, gaan we deze query uitvoeren:
Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving
Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values
In deze schermopname ziet u de unieke combinaties van ObjectName
en CounterName
waarden in de CounterName
kolom in de afgelopen 24 uur:
De % Processor Time
teller geeft u inzicht in het gebruik van de processor of DE CPU (Central Processing Unit). Dit is informatie die u nodig hebt.
Laten we eens kijken hoe we deze gegevens kunnen gebruiken en welke KQL-bewerkingen kunnen helpen bij het extraheren en transformeren van de gegevens:
Kolom | Beschrijving | Analysedoel | Gerelateerde KQL-bewerkingen |
---|---|---|---|
TimeGenerated |
Geeft aan wanneer de virtuele machine elk logboek heeft gegenereerd. | Definieer het tijdsbereik van de analyse. | where TimeGenerated > ago(1d) Zie ago(), waar operator en numerieke operatoren voor meer informatie. |
Computer |
Computer van waaruit de gebeurtenis is verzameld. | CPU-gebruik koppelen aan een specifieke computer. | summarize... by Computer Zie samenvattingsoperator voor meer informatie. |
ObjectName |
Bevat de namen van alle objecten waarvoor de tabel prestatiegegevens bevat. | Bewaak de prestaties van de processor. | where ObjectName == "Processor" Zie de operator == (is gelijk aan) voor meer informatie. |
CounterName |
Bevat de namen van alle prestatiemeteritems in de tabel. | Bewaak het % Processor Time prestatiemeteritem. |
where CounterName == "% Processor Time" Zie waar operator en == (gelijk aan) operator voor meer informatie. |
InstanceName |
Hiermee worden de bewaakte exemplaren van het bewaakte object weergegeven. | Bewaak alle processorkernen. | where InstanceName == "_Total" Zie waar operator en == (gelijk aan) operator voor meer informatie. |
CounterValue |
De meting die voor de teller is verzameld. | Prestatiemetingen voor de % Processor Time prestatiemeteritem ophalen. |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Zie samenvattingsoperator en de aggregatiefuncties min(, max(), avg()en percentielen() voor meer informatie. |
3. Schrijf uw query
Schrijf een query met een overzicht van het gemiddelde, minimale en maximale CPU-gebruik van alle computers in de afgelopen dag.
Haal alle logboeken op die zijn gegenereerd op de afgelopen dag waarop de
% Processor Time
prestatiemeteritems zijn gerapporteerd:Klik hier om query's uit te voeren in de Log Analytics-demo-omgeving.
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
Met deze query worden alle logboeken opgehaald die betrekking hebben op de totale processortijdmetingen van de afgelopen dag.
Zoek de minimum-, maximum- en gemiddelde prestatiemeteritems en bereken de 90e en 99e percentieltellerwaarden voor elke computer:
Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving
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
In de resultatenset van deze query worden de minimum-, maximum-, gemiddelde-, 90e en 99e percentieltellerwaarden
% Processor Time
weergegeven voor elke computer waarvoor gegevens zich in uw Log Analytics-werkruimte bevinden.Filter de queryresultaten voor vermeldingen waarbij de
% Processor Time
tellerwaarde hoger is dan 80 in het bereik van het 90e en 99e percentiel:Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving
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
De resultatenset van deze query bestaat uit alle computers waarvoor de bovenste 10% en 15%
% Processor Time
waarden meer dan 80 zijn.
Uitdaging: Besturingssysteemgegevens uit de Heartbeat-tabel toevoegen aan de queryresultaten
U kunt uw queryresultaten vaak beter begrijpen door informatie uit een andere tabel te correleren met de queryresultaten met behulp van de join
operator. Zie joinoperator voor meer informatie.
Kunt u de join
operator gebruiken om informatie toe te voegen over het besturingssysteem dat wordt uitgevoerd op elke computer, die beschikbaar is in de Heartbeat
tabel, zoals we in de eerste oefening hebben gezien?
Oplossing:
Voeg informatie uit de
Heartbeat
tabel toe over het besturingssysteem dat wordt uitgevoerd op elk van de computers in de queryresultaten:Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving
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
Met deze iteratie van de query worden de
Computer
enOSType
kolommen uit deHeartbeat
tabel toegevoegd aan de vorige queryresultaten.De
Computer
kolom wordt nu twee keer weergegeven in de queryresultaten: eenmaal uit de query in dePerf
tabel en eenmaal uit de query in deHeartbeat
tabel. DeComputer
naam van de kolom uit deHeartbeat
tabel is gewijzigdComputer1
, maar de twee tabellen bevatten identieke gegevens. Als u beide kolommen hebt, kunt u de resultaten uit de twee tabellen correleren, maar u kunt nu de dubbele kolom wegfilteren.Verwijder de
Computer1
kolom uit de queryresultaten:Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving
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
De resultatenset van deze query bevat alle computers die de volledige CPU-capaciteit hebben bereikt en het besturingssysteem dat op elke computer wordt uitgevoerd, wat nuttig is voor verdere analyse.