Övning – Sammanfatta statistik för ledigt utrymme per dator

Slutförd

Här hämtar och transformerar du data från tabellen Perf med hjälp av KQL-frågor för att analysera det lediga utrymmet för datorernas loggningsdata till Log Analytics-arbetsytan.

1. Ange mål

Kom ihåg att IT-teamet har märkt återkommande problem som rör otillräckligt ledigt utrymme på virtuella datorer.

Om du vill analysera användningen av ledigt utrymme för datorer som körs i DIN IT-miljö behöver du information om:

  • Totalt ledigt utrymme på varje dator.
  • Procentandel utrymme som används på varje dator.

2. Utvärdera loggar

Som vi såg föregående övning innehåller tabellen Perf information om prestanda för maskinvarukomponenter, operativsystem och program.

Vi noterade att kolumnen Perf tabellens ObjectName innehåller namnen på alla objekt som övervakas och kolumnen CounterName innehåller namnen på de olika prestandaräknare som Azure Monitor samlar in. Vi såg också att båda dessa kolumner innehåller många värden, varav många visas flera gånger.

Vi kör en fråga i tabellen Perf för att visa distinkta ObjectName värden:

Klicka för att köra frågan i Log Analytics-demomiljön

Perf // The table you’re querying
| distinct ObjectName // Lists distinct ObjectName values

Resultatuppsättningen för den här frågan innehåller alla ObjectName värden som för närvarande finns i tabellen:

Skärmbild som visar resultatet av frågan Distinkt objektnamn i tabellen Perf med värdena för logisk disk markerade.

I vårt scenario är vi intresserade av att analysera virtuella datorer, så objekten vi vill titta på är LogicalDisk och Logical Disk (för att övervaka minnet på en fysisk dator tittar du på memory-objektet). Anledningen till att det finns två objekt med liknande namn är att LogicalDisk är objektnamnet i Windows-poster medan Logical Disk används i Linux-poster.

Kör för att visa de distinkta namnen på de räknare som Azure Monitor samlar in för LogicalDisk- och Logical Disk-objekten:

Klicka för att köra frågan i Log Analytics-demomiljön

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

Resultatuppsättningen för den här frågan innehåller alla prestandaräknare som samlats in för objekten LogicalDisk och Logical Disk:

Skärmbild som visar resultatet av en fråga som visar de distinkta namnen på de räknare som Azure Monitor samlar in för LogicalDisk-objekten (skrivs som ett ord) och Logisk disk (skrivs som två ord).

Prestandaräknarna som ger information om använt och ledigt utrymme är % Used Space, % Free Spaceoch Free Megabytes. Vi har två liknande räknare – % Free Space och % Used Space – som samlats in från Windows- respektive Linux-poster.

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 operatörenanvänds, och i numeriska operatörer.
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 sammanfattningsoperatorn.
ObjectName Innehåller namnen på alla objekt som tabellen innehåller prestandadata för. För din analys är du intresserad av objekten LogicalDisk och Logical Disk. Övervaka de logiska diskarna på virtuella datorer. where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk"
Mer information finns i där operatorn och == (lika med) operatorn.
CounterName Innehåller namnen på alla prestandaräknare i tabellen.
  • Övervaka räknare relaterade till ledigt utrymme.
  • Byt namn på % Used Space till % Free Space (parallellt konverterar du den relaterade CounterValue)
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
För att förenkla resultaten och underlätta ytterligare analys:
  • Ändra % Used Space till % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Ändra Free Megabytes till OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Mer information finns i där operatorn och == (lika med) operatorn.
InstanceName Visar en lista över övervakade instanser av det övervakade objektet. Övervaka alla enheter på den virtuella datorn. InstanceName == "_Total"
Mer information finns i där operatorn och == (lika med) operatorn.
CounterValue Mätvärdet som samlas in för räknaren. Hämta prestandamått för prestandaräknaren % Used Space, % Free Spaceoch Free Megabytes.
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Mer information finns i där operatorn och == (lika med) operatorn.

3. Skriv din fråga

  1. Hämta alla loggar som genererats under den senaste dagen som rapporterade % Used Space, % Free Spaceoch Free Megabytes prestandaräknare för LogicalDisk- och Logical Disk-objekten:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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  
    

    Resultatuppsättningen för den här frågan innehåller sannolikt flera poster för varje dator som du samlar in prestandaräknare från som är relaterade till ledigt utrymme.

    Skärmbild som visar resultatet av en fråga för loggar som genererats under den senaste dagen som rapporterar om ledigt utrymme för virtuella datorer.

  2. Filtrera efter det sista räknarvärdet som samlats in för varje räknare som rapporteras av varje virtuell dator:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Nu har du det senast rapporterade räknarvärdet för varje ledig utrymmesrelaterad räknare för varje dator.

    Skärmbild som visar resultatet av en fråga som filtrerar efter det senaste räknarvärdet som samlats in för varje räknare varje virtuell dator.

  3. För att underlätta analysen:

    1. Konvertera % Used Space-räknarvärdet till % Free Space (genom att subtrahera värdet för % Used Space från 100%) och ändra namnet på kolumnen % Used Space till % Free Space:

      Klicka för att köra frågan i Log Analytics-demomiljön

      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
      

      Resultatuppsättningen för den här frågan visar procentandelen ledigt utrymme på Windows- och Linux-datorer på samma sätt, vilket gör ytterligare analys tydligare och enklare.

      Skärmbild som visar resultatet av en fråga som konverterar räknarvärdet för procent använt utrymme till ledigt utrymme i procent.

    2. Konvertera Free Megabytes till Gigabyte (Free Megabytes-värdet * 0,001 = fria Gigabyte) och döp om Free Megabytes till OverallFreeSpaceInGB:

      Klicka för att köra frågan i Log Analytics-demomiljön

      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
      

      Nu kan du få en tydlig bild av det totala lediga utrymmet på varje dator i gigabyte och som en procentandel av datorns totala minne.

      Skärmbild som visar resultatet av en fråga som konverterar kolumnen Kostnadsfria megabyte till Totalt ledigt utrymme i Gigabyte.

Utmaning: Samla statistik över ledigt utrymme för varje dator

Resultatuppsättningen för vår fråga hittills innehåller två rader för varje dator – en rad visar det totala lediga utrymmet i Gigabyte och den andra visar procentandelen ledigt utrymme som är tillgängligt.

Kan du skapa en ordlista som kombinerar dessa två statistik för ledigt utrymme för varje virtuell dator?

Tips:

  • Använd funktionen bag_pack() för att skapa nyckel/värde-par för var och en av de två prestandaräknarna.
  • Använd aggregeringsfunktionen make_bag() för att paketera båda nyckelvärdesvärdena för varje dator.

lösning:

  1. Gruppera CounterName, CounterValue nyckel-värdepar:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Genom att gruppera CounterName, CounterValue nyckel/värde-par kan du skapa en ordlista med statistik för ledigt utrymme för varje dator i nästa steg.

    En skärmbild som visar resultaten av en fråga som grupperar räknarnamn och räknarvärde i nyckel/värde-par.

  2. Skapa en egenskapspåse (ordlista), med namnet SpaceStats, av all statistik för ledigt utrymme som samlas in för varje dator, sammanfatta efter dator och filtrera efter datorer med mindre än 50% ledigt utrymme:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Resultatuppsättningen för den här frågan sammanfattar statistik för ledigt utrymme per dator, vilket var målet för din analys av ledigt utrymme!

    Den sista raden i frågan filtrerar för datorer med mindre än 50% ledigt utrymme. Du kanske vill övervaka eller analysera närmare eller konfigurera om dem så att de inte får slut på utrymme.

    Skärmbild som visar resultatet av en fråga som sammanfattar statistik för ledigt utrymme per dator.