Cvičení – shrnutí statistik volného místa podle počítače

Dokončeno

V této části načtete a transformujete data z Perf tabulky pomocí dotazů KQL, abyste analyzovali volné místo počítačů, které protokolují data do pracovního prostoru služby Log Analytics.

1. Nastavení cílů

Vzpomeňte si, že váš IT tým zaznamenal opakované problémy související s nedostatkem volného místa na virtuálních počítačích.

Pokud chcete analyzovat využití volného místa počítačů spuštěných ve vašem IT prostředí, potřebujete informace o:

  • Celkové volné místo dostupné na každém počítači.
  • Procento využitého místa na každém počítači

2. Posouzení protokolů

Jak jsme viděli v předchozím cvičení, Perf tabulka poskytuje informace o výkonu hardwarových komponent, operačních systémů a aplikací.

Poznamenali jsme, že Perf sloupec tabulky ObjectName uvádí názvy všech monitorovaných objektů a CounterName sloupec obsahuje názvy různých čítačů výkonu, které Azure Monitor shromažďuje. Také jsme viděli, že oba tyto sloupce obsahují velké množství hodnot, z nichž mnohé se zobrazují vícekrát.

Pojďme spustit dotaz na Perf tabulku, abychom vypsali jedinečné ObjectName hodnoty:

Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

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

Sada výsledků tohoto dotazu obsahuje všechny ObjectName hodnoty, které jsou aktuálně v tabulce:

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

V našem scénáři nás zajímá analýza virtuálních počítačů, takže objekty, na které se chceme podívat, a LogicalDisk Logical Disk (pokud chcete monitorovat paměť ve fyzickém počítači, podívali byste se na memory objekt). Důvodem jsou dva podobně pojmenované objekty, je to název LogicalDisk objektu v záznamech Systému Windows, když Logical Disk se používá v linuxových záznamech.

Pokud chcete zobrazit seznam jedinečných názvů čítačů, které Azure Monitor shromažďuje pro objekty LogicalDisk a Logical Disk objekty, spusťte:

Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

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

Sada výsledků tohoto dotazu zahrnuje všechny čítače výkonu shromážděné pro objekty LogicalDisk a Logical Disk objekty:

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.

Čítače výkonu, které poskytují informace o použitém a volném prostoru, jsou % Used Space, % Free Spacea Free Megabytes. Máme dva podobné čítače – % Free Space a % Used Space – shromážděné ze záznamů Windows a Linuxu.

Pojďme posoudit, jak můžeme tato data používat a které operace KQL můžou pomoct extrahovat a transformovat data:

Sloupec Popis Cíl analýzy Související operace KQL
TimeGenerated Označuje, kdy virtuální počítač vygeneroval každý protokol. Definujte časový rozsah analýzy. where TimeGenerated > ago(1d)
Další informace naleznete v tématu ago() kde operátor a numerické operátory.
Computer Počítač, ze kterého byla událost shromážděna. Přidružte využití procesoru ke konkrétnímu počítači. summarize... by Computer
Další informace najdete v operátoru summarize.
ObjectName Obsahuje názvy všech objektů, pro které tabulka uchovává údaje o výkonu. Pro účely analýzy vás zajímají LogicalDisk objekty a Logical Disk objekty. Monitorujte logické disky ve virtuálních počítačích. where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk"
Další informace naleznete v tématu, kde operátor a == (rovná se).
CounterName Obsahuje názvy všech čítačů výkonu v tabulce.
  • Monitorujte čítače související s volným místem.
  • Přejmenujte % Used Space na % Free Space (paralelně převeďte související CounterValue)
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
Zjednodušení výsledků a usnadnění další analýzy:
  • Změnit % Used Space na % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Změnit Free Megabytes na OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Další informace naleznete v tématu, kde operátor a == (rovná se).
InstanceName Zobrazí seznam monitorovaných instancí monitorovaného objektu. Monitorujte všechny jednotky na virtuálním počítači. InstanceName == "_Total"
Další informace naleznete v tématu, kde operátor a == (rovná se).
CounterValue Měření shromážděné pro čítač. Načtěte měření výkonu pro čítače výkonu % Used Spacea % Free SpaceFree Megabytes čítače výkonu.
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Další informace naleznete v tématu, kde operátor a == (rovná se).

3. Napište svůj dotaz.

  1. Načtěte všechny protokoly vygenerované za poslední den, které ohlásily čítače LogicalDisk výkonu % Free Space% Used Spacea Free Megabytes Logical Disk objekty:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    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  
    

    Sada výsledků tohoto dotazu pravděpodobně obsahuje více záznamů pro každý počítač, ze kterého shromažďujete čítače výkonu související s volným místem.

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

  2. Vyfiltrujte poslední hodnotu čítače shromážděnou pro každý čítač hlášený každým virtuálním počítačem:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    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
    

    Teď máte poslední hlášenou hodnotu čítače pro každý čítač související s volným místem každého počítače.

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

  3. Pro usnadnění analýzy:

    1. Převeďte hodnotu čítače % Used Space na % Free Space hodnotu (odečtením % Used Space hodnoty od 100 %) a změňte název % Used Space sloupce na % Free Space:

      Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

      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
      

      Sada výsledků tohoto dotazu představuje procento volného místa na počítačích s Windows a Linuxem stejným způsobem, což usnadňuje a usnadňuje další analýzu.

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

    2. Převeďte Free Megabytes na Gigabajty (Free Megabytes hodnota * 0,001 = Free Gigabajty) a znovu na Free Megabytes OverallFreeSpaceInGB:

      Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

      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
      

      Teď můžete získat jasný přehled o celkovém volném prostoru na každém počítači v gigabajtech a jako procento celkové paměti počítače.

      Screenshot that shows the results of a query that converts the Free Megabytes column to Overall Free Space In Gigabytes.

Výzva: Seskupování statistik volného místa pro každý počítač

Sada výsledků dotazu zatím obsahuje dva řádky pro každý počítač – jeden řádek zobrazuje celkové volné místo v gigabajtech a druhý zobrazuje procento volného místa, které je k dispozici.

Můžete vytvořit slovník, který tyto dvě statistiky volného místa spojuje pro každý virtuální počítač?

Nápověda:

Řešení:

  1. Seskupování CounterName, CounterValue párů klíč-hodnota:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    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
    

    Seskupení CounterName, CounterValue párů klíč-hodnota umožňuje vytvořit slovník statistik volného místa pro každý počítač v dalším kroku.

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

  2. Vytvořte kontejner vlastností (slovník), který se nazývá SpaceStats, ze všech statistik volného místa shromážděných pro každý počítač, sumarizovat podle počítače a filtrovat počítače s méně než 50% volným místem:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    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
    

    Sada výsledků tohoto dotazu shrnuje statistiky volného místa podle počítače, což byl cíl analýzy volného místa.

    Poslední řádek dotazu filtruje pro počítače s méně než 50% volným místem. Možná budete chtít monitorovat nebo analyzovat podrobněji nebo je překonfigurovat, aby se zajistilo, že nevyčerchají místo.

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