Oefening: statistieken over vrije ruimte samenvatten per computer

Voltooid

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:

Schermopname met de resultaten van de query Unieke objectnaam in de tabel Perf, met de waarden van de logische schijf gemarkeerd.

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:

Schermopname van de resultaten van een query met de afzonderlijke namen van de meteritems die Azure Monitor verzamelt voor de objecten LogicalDisk (geschreven als één woord) en Logische schijf (geschreven als twee woorden).

De prestatiemeteritems die informatie bieden over gebruikte en vrije ruimte zijn % Used Space, % Free Spaceen 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.
  • Houd tellers in de gaten die betrekking hebben op vrije ruimte.
  • Wijzig de naam van % Used Space in % Free Space (converteer de gerelateerde CounterValueparallel )
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
Om de resultaten te vereenvoudigen en verdere analyse te vergemakkelijken:
  • Wijzig % Used Space in % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Free Megabytes wijzigen in OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Zie waar operator en == (is gelijk aan) operatorvoor meer informatie.
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 Spaceen Free Megabytes prestatiecounters.
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Zie waar operator en == (is gelijk aan) operatorvoor meer informatie.

3. Schrijf uw query

  1. Haal alle logboeken op die zijn gegenereerd op de afgelopen dag waarin de % Used Space, % Free Spaceen Free Megabytes prestatiemeteritems voor de LogicalDisk- en Logical 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.

    Schermopname met de resultaten van een query voor logboeken die zijn gegenereerd in de afgelopen dag en die verslag doen van de vrije schijfruimte van virtuele machines.

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

    Schermopname die de resultaten laat zien van een query die filtert op de laatste tellerwaarde die voor elke teller in elke virtuele machine is verzameld.

  3. Om analyse te vergemakkelijken:

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

      Schermopname die de resultaten toont van een query die de tellerwaarde van Percentage Gebruikte Ruimte omzet naar Percentage Vrije Ruimte.

    2. Converteer Free Megabytes naar gigabytes (Free Megabytes waarde * 0,001 = gratis gigabytes) en label Free Megabytes opnieuw in OverallFreeSpaceInGB:

      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.

      Schermopname van de resultaten van een query waarmee de kolom Vrije megabytes wordt geconverteerd naar Totale vrije ruimte in gigabytes.

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:

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

    Schermafbeelding die de resultaten toont van een query die samenvoegt: sleutel-waardeparen voor Tellernamen en Tellerwaarden.

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

    Schermopname met de resultaten van een query met een overzicht van de beschikbare ruimtestatistieken per machine.