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.

De kolom van ObjectName de Perf tabel bevat de namen van alle objecten die worden bewaakt en de CounterName kolom bevat de namen 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 hier om een query uit te voeren in de Log Analytics-demo-omgeving

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:

Screenshot that shows the results of the Distinct Object Name query on the Perf table with the Logical Disk values highlighted.

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, kijkt u naar het memory object). De reden dat er twee vergelijkbare benoemde objecten zijn, is dat LogicalDisk de objectnaam in Windows-records is terwijl Logical Disk deze wordt gebruikt in Linux-records.

Voer de volgende opdracht uit om de afzonderlijke namen van de tellers weer te geven die door Azure Monitor worden verzameld voor de LogicalDisk en Logical Disk objecten:

Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving

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:

Screenshot that shows the results of a query that lists the distinct names of the counters Azure Monitor collects for the LogicalDisk (written as one word) and Logical Disk (written as two words) objects.

De prestatiemeteritems die informatie bieden over gebruikte en vrije ruimte zijn % Used Space, % Free Spaceen Free Megabytes. We hebben 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 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. 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 == (gelijk aan) operator voor meer informatie.
CounterName Bevat de namen van alle prestatiemeteritems in de tabel.
  • Monitortellers met betrekking tot vrije ruimte.
  • Naam wijzigen % Used Space in (parallel, het gerelateerde CounterValueconverteren)% Free Space
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
Om de resultaten te vereenvoudigen en verdere analyse te vergemakkelijken:
  • Wijzigen % Used Space in % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Wijzigen Free Megabytes in OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Zie waar operator en == (gelijk aan) operator voor meer informatie.
InstanceName Hiermee worden de bewaakte exemplaren van het bewaakte object weergegeven. Bewaak alle stations op de virtuele machine. InstanceName == "_Total"
Zie waar operator en == (gelijk aan) operator voor meer informatie.
CounterValue De meting die voor de teller is verzameld. Prestatiemetingen voor de % Used Spaceprestatiemeteritems % Free Spaceen Free Megabytes prestatiemeteritems ophalen.
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Zie waar operator en == (gelijk aan) operator voor 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 hier om een query uit te voeren in de Log Analytics-demo-omgeving

    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.

    Screenshot that shows the results of a query for logs generated in the past day that report on virtual machine free space.

  2. Filter op de laatste tellerwaarde die wordt verzameld voor elke teller die door elke virtuele machine wordt gerapporteerd:

    Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving

    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.

    Screenshot that shows the results of a query that filters for the last counter value collected for each counter every virtual machine.

  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 wijzig de naam van de % Used Space kolom in % Free Space:

      Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving

      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.

      Screenshot that shows the results of a query that converts the Percentage Used Space counter value to Percentage Free Space.

    2. Converteren Free Megabytes naar Gigabytes (Free Megabytes waarde * 0,001 = Gratis gigabytes) en labelen naar Free Megabytes OverallFreeSpaceInGB:

      Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving

      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.

      Screenshot that shows the results of a query that converts the Free Megabytes column to Overall Free Space 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?

Hint:

  • 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. Sleutel-waardeparen groeperen CounterName, CounterValue :

    Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving

    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 sleutel-waardeparen groepeert CounterName, CounterValue , kunt u in de volgende stap een woordenlijst maken met vrije ruimtestatistieken voor elke computer.

    Screenshot that shows the results of a query that groups together Counter Name and Counter Value key-value pairs.

  2. Maak een eigenschapsverzameling (woordenlijst), SpaceStats genoemd, van alle beschikbare ruimtestatistieken die voor elke machine worden verzameld, samenvatten op computer en filteren op machines met minder dan 50% vrije ruimte:

    Klik hier om een query uit te voeren in de Log Analytics-demo-omgeving

    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 was van uw vrije ruimteanalyse.

    De laatste regel van de queryfilters voor machines met minder dan 50% vrije ruimte. U kunt ze beter controleren of analyseren, of ze opnieuw configureren om ervoor te zorgen dat er geen ruimte meer is.

    Screenshot that shows the results of a query that summarizes free space statistics by machine.