Oefening: statistieken over vrije ruimte samenvatten per computer
Hier haalt en transformeert u gegevens uit de Perf
tabel, met behulp van KQL-query's, om de vrije ruimte van de machines te analyseren die gegevens registreren in uw Log Analytics-werkruimte.
1. Doelstellingen instellen
Zoals u weet, heeft uw IT-team terugkerende problemen opgemerkt met betrekking tot onvoldoende vrije ruimte op virtuele machines.
Als u het gebruik van vrije ruimte wilt analyseren van machines die worden uitgevoerd in uw IT-omgeving, hebt u informatie nodig over:
- Totale beschikbare vrije ruimte op elke machine.
- Percentage ruimte dat op elke machine wordt gebruikt.
2. Logboeken evalueren
Zoals we de vorige oefening hebben gezien, bevat de Perf
tabel informatie over de prestaties van hardwareonderdelen, besturingssystemen en toepassingen.
We hebben vastgesteld dat de ObjectName
kolom van de Perf
tabel de namen bevat van alle objecten die worden bewaakt en dat de kolom CounterName
de namen bevat van de verschillende prestatiemeteritems die door Azure Monitor worden verzameld. We hebben ook gezien dat beide kolommen veel waarden bevatten, waarvan er veel meerdere keren worden weergegeven.
We gaan een query uitvoeren in de Perf
tabel om afzonderlijke ObjectName
waarden weer te geven:
Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf // The table you’re querying
| distinct ObjectName // Lists distinct ObjectName values
De resultatenset van deze query bevat alle ObjectName
waarden die zich momenteel in de tabel bevinden:
In ons scenario zijn we geïnteresseerd in het analyseren van virtuele machines, dus de objecten die we willen bekijken, zijn LogicalDisk
en Logical Disk
(om het geheugen op een fysieke machine te bewaken, zou u het memory
object bekijken). De reden dat er twee vergelijkbare objecten zijn, is dat LogicalDisk
de objectnaam in Windows-records is terwijl Logical Disk
wordt gebruikt in Linux-records.
Als u de afzonderlijke namen van de meteritems wilt weergeven die Azure Monitor verzamelt voor de LogicalDisk
- en Logical Disk
-objecten, voert u het volgende uit:
Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf // The table you’re querying
| where ObjectName == "LogicalDisk" or // The object name used in Windows records
ObjectName == "Logical Disk" // The object name used in Linux records
| distinct CounterName // Lists distinct CounterName values
De resultatenset van deze query bevat alle prestatiemeteritems die zijn verzameld voor de LogicalDisk
- en Logical Disk
-objecten:
De prestatiemeteritems die informatie bieden over gebruikte en vrije ruimte zijn % Used Space
, % Free Space
en Free Megabytes
. Er zijn twee vergelijkbare tellers, % Free Space
en % Used Space
, verzameld uit respectievelijk Windows- en Linux-records.
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 operatoren numerieke operatorenvoor meer informatie. |
Computer |
Computer van waaruit de gebeurtenis is verzameld. | CPU-gebruik koppelen aan een specifieke computer. | summarize... by Computer Voor meer informatie, zie samenvatten operator. |
ObjectName |
Bevat de namen van alle objecten waarvoor de tabel prestatiegegevens bevat. Voor uw analyse bent u geïnteresseerd in de LogicalDisk en Logical Disk objecten. |
Bewaak de logische schijven in virtuele machines. | where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk" Zie waar operator en == (is gelijk aan) operatorvoor meer informatie. |
CounterName |
Bevat de namen van alle prestatiemeteritems in de tabel. |
|
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" Om de resultaten te vereenvoudigen en verdere analyse te vergemakkelijken:
|
InstanceName |
Hiermee worden de bewaakte exemplaren van het bewaakte object weergegeven. | Bewaak alle schijven op de virtuele machine. | InstanceName == "_Total" Zie waar operator en == (is gelijk aan) operatorvoor meer informatie. |
CounterValue |
De meting die voor de teller is verzameld. | Prestatiemetingen ophalen voor de % Used Space , % Free Space en Free Megabytes prestatiecounters. |
|
3. Schrijf uw query
Haal alle logboeken op die zijn gegenereerd op de afgelopen dag waarin de
% Used Space
,% Free Space
enFree Megabytes
prestatiemeteritems voor deLogicalDisk
- enLogical Disk
-objecten zijn gerapporteerd:Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual machine
De resultatenset van deze query bevat waarschijnlijk meerdere records voor elke computer waaruit u prestatiemeteritems verzamelt die betrekking hebben op vrije ruimte.
Filter voor de laatste tellerwaarde die is verzameld voor elke teller die door elke virtuele machine is gerapporteerd.
Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine
U hebt nu de laatst gerapporteerde tellerwaarde voor elke vrije ruimte-gerelateerde teller van elke machine.
Om analyse te vergemakkelijken:
Converteer de
% Used Space
tellerwaarde naar% Free Space
(door de% Used Space
waarde af te trekken van 100%) en de naam van de kolom% Used Space
te wijzigen in% Free Space
:Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space
De resultatenset van deze query geeft het percentage vrije ruimte op Windows- en Linux-machines op dezelfde manier weer, waardoor verdere analyse duidelijker en eenvoudiger wordt.
Converteer
Free Megabytes
naar gigabytes (Free Megabytes
waarde * 0,001 = gratis gigabytes) en labelFree Megabytes
opnieuw inOverallFreeSpaceInGB
:Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB
U kunt nu een duidelijk beeld krijgen van de totale vrije ruimte op elke machine in gigabytes en als percentage van het totale geheugen van de machine.
Uitdaging: Bundel vrije ruimtestatistieken voor elke computer
De resultatenset van onze query bevat tot nu toe twee regels voor elke computer: één regel toont de totale vrije ruimte in Gigabytes en de andere regel geeft het percentage beschikbare vrije ruimte weer.
Kunt u een woordenlijst maken waarmee deze twee statistieken over vrije ruimte voor elke virtuele machine worden gebundeld?
Aanwijzing:
- Gebruik de functie bag_pack() om sleutel-waardeparen te maken voor elk van de twee prestatiemeteritems.
- Gebruik de aggregatiefunctie make_bag() om beide sleutelwaardewaarden voor elke computer te bundelen.
oplossing:
Groeperen
CounterName, CounterValue
sleutel-waardeparen:Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB | extend packed = pack(CounterName, CounterValue) // Groups together CounterName-CounterValue key-value pairs
Als u
CounterName, CounterValue
sleutel-waardeparen groepeert, kunt u in de volgende stap een woordenlijst maken met vrije ruimtestatistieken voor elke computer.Maak een eigenschapsverzameling (woordenlijst), genaamd SpaceStats, van alle vrije ruimtestatistieken die voor elke machine worden verzameld, samenvatten per computer, en filteren voor computers met een vrije ruimte van minder dan 50%.
Klik om query's uit te voeren in de Log Analytics-demoomgeving
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB | extend packed = pack(CounterName, CounterValue) // Groups together CounterName-CounterValue key-value pairs | summarize SpaceStats = make_bag(packed) by Computer // Summarizes free space statstics by computer | where SpaceStats.["% Free Space"]<= 50
De resultatenset van deze query bevat een overzicht van de statistieken van vrije ruimte per machine, wat het doel van uw vrije ruimteanalyse was.
De laatste regel van de query filtert voor machines met minder dan 50% vrije ruimte. Misschien wilt u ze beter monitoren of analyseren, of ze opnieuw configureren om ervoor te zorgen dat ze niet zonder ruimte komen te zitten.