Ćwiczenie — podsumowanie statystyk wolnego miejsca według komputera

Ukończone

W tym miejscu pobierzesz i przekształcisz dane z Perf tabeli przy użyciu zapytań KQL, aby przeanalizować wolne miejsce na danych rejestrowania maszyn w obszarze roboczym usługi Log Analytics.

1. Ustawianie celów

Pamiętaj, że zespół IT zauważył cykliczne problemy związane z niewystarczającą ilością wolnego miejsca na maszynach wirtualnych.

Aby przeanalizować użycie wolnego miejsca na maszynach uruchomionych w środowisku IT, potrzebne są następujące informacje:

  • Całkowita ilość wolnego miejsca dostępnego na każdej maszynie.
  • Procent miejsca używanego na każdej maszynie.

2. Ocena dzienników

Jak pokazano w poprzednim ćwiczeniu, Perf tabela zawiera informacje o wydajności składników sprzętowych, systemów operacyjnych i aplikacji.

Zauważyliśmy, że Perf kolumna ObjectName tabeli zawiera nazwy wszystkich monitorowanych obiektów, a CounterName kolumna zawiera nazwy różnych liczników wydajności zbieranych przez usługę Azure Monitor. Zobaczyliśmy również, że obie te kolumny przechowują wiele wartości, z których wiele jest wyświetlanych wielokrotnie.

Uruchomimy zapytanie w tabeli, Perf aby wyświetlić listę odrębnych ObjectName wartości:

Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics

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

Zestaw wyników tego zapytania zawiera wszystkie ObjectName wartości obecnie w tabeli:

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

W naszym scenariuszu interesuje nas analizowanie maszyn wirtualnych, więc obiekty, które chcemy przyjrzeć, to LogicalDisk i Logical Disk (aby monitorować pamięć na maszynie fizycznej, przyjrzyjmy się obiektowi memory ). Powodem, dla którego istnieją dwa podobnie nazwane obiekty, jest to, że LogicalDisk nazwa obiektu w rekordach systemu Windows jest używana w rekordach Logical Disk systemu Linux.

Aby wyświetlić listę unikatowych nazw liczników zbieranych przez usługę Azure Monitor dla LogicalDisk obiektów i Logical Disk , uruchom polecenie:

Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi 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

Zestaw wyników tego zapytania zawiera wszystkie liczniki wydajności zebrane dla LogicalDisk obiektów i :Logical Disk

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.

Liczniki wydajności, które zawierają informacje o używanym i wolnym miejscu, to % Used Space, % Free Spacei Free Megabytes. Mamy dwa podobne liczniki — % Free Space i % Used Space — zbierane odpowiednio z rekordów systemów Windows i Linux.

Oceńmy, jak możemy używać tych danych i które operacje KQL mogą pomóc w wyodrębnieniu i przekształceniu danych:

Kolumna opis Cel analizy Powiązane operacje KQL
TimeGenerated Wskazuje, kiedy maszyna wirtualna wygenerowała każdy dziennik. Zdefiniuj zakres czasu analizy. where TimeGenerated > ago(1d)
Aby uzyskać więcej informacji, zobacz ago(), where, operator i Operatory liczbowe.
Computer Komputer, z którego zebrano zdarzenie. Skojarz użycie procesora CPU z określonym komputerem. summarize... by Computer
Aby uzyskać więcej informacji, zobacz operator podsumowania.
ObjectName Przechowuje nazwy wszystkich obiektów, dla których tabela przechowuje dane wydajności. Na potrzeby analizy interesuje LogicalDisk Cię obiekty i Logical Disk . Monitorowanie dysków logicznych na maszynach wirtualnych. where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk"
Aby uzyskać więcej informacji, zobacz , gdzie operator i == (equals) operator.
CounterName Przechowuje nazwy wszystkich liczników wydajności w tabeli.
  • Monitoruj liczniki związane z wolnym miejscem.
  • Zmień nazwę % Used Space na % Free Space (równolegle przekonwertuj powiązane CounterValue)
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
Aby uprościć wyniki i ułatwić dalszą analizę:
  • Zmień % Used Space na % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Zmień Free Megabytes na OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Aby uzyskać więcej informacji, zobacz , gdzie operator i == (equals) operator.
InstanceName Wyświetla listę monitorowanych wystąpień monitorowanego obiektu. Monitoruj wszystkie dyski na maszynie wirtualnej. InstanceName == "_Total"
Aby uzyskać więcej informacji, zobacz , gdzie operator i == (equals) operator.
CounterValue Pomiar zebrany dla licznika. Pobieranie pomiarów wydajności dla % Used Spaceliczników wydajności , % Free Spacei Free Megabytes .
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Aby uzyskać więcej informacji, zobacz , gdzie operator i == (equals) operator.

3. Napisz zapytanie

  1. Pobierz wszystkie dzienniki wygenerowane w ciągu ostatniego dnia, które zgłosiły % Used Spaceliczniki wydajności dla LogicalDisk obiektów i Logical Disk , % Free Spacei Free Megabytes :

    Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi 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  
    

    Zestaw wyników tego zapytania prawdopodobnie zawiera wiele rekordów dla każdej maszyny, z której są zbierane liczniki wydajności związane z wolnym miejscem.

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

  2. Filtruj ostatnią wartość licznika zebraną dla każdego licznika zgłoszonego przez każdą maszynę wirtualną:

    Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi 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
    

    Masz teraz ostatnią zgłoszoną wartość licznika dla każdego licznika wolnego miejsca dla każdej maszyny.

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

  3. Aby ułatwić analizę:

    1. Przekonwertuj wartość licznika % Used Space na % Free Space (odejmując % Used Space wartość z 100%) i zmień nazwę % Used Space kolumny na % Free Space:

      Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi 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
      

      Zestaw wyników tego zapytania przedstawia procent wolnego miejsca na maszynach z systemami Windows i Linux w taki sam sposób, co ułatwia dalszą analizę.

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

    2. Przekonwertuj Free Megabytes na gigabajty (Free Megabytes wartość * 0,001 = bezpłatne gigabajty) i zmień etykietę Free Megabytes na OverallFreeSpaceInGB:

      Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi 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
      

      Teraz możesz uzyskać jasny obraz całkowitego wolnego miejsca na każdej maszynie w gigabajtach i jako procent całkowitej pamięci maszyny.

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

Wyzwanie: Łączenie ze sobą statystyk dotyczących wolnego miejsca dla każdego komputera

Zestaw wyników zapytania do tej pory zawiera dwa wiersze dla każdego komputera — jeden wiersz pokazuje ogólne wolne miejsce w gigabajtach, a drugi pokazuje procent wolnego miejsca dostępnego.

Czy można utworzyć słownik, który łączy te dwie statystyki wolnego miejsca dla każdej maszyny wirtualnej?

Wskazówka:

  • Użyj funkcji bag_pack(), aby utworzyć pary klucz-wartość dla każdego z dwóch liczników wydajności.
  • Użyj funkcji agregacji make_bag(), aby powiązać obie wartości klucz-wartość dla każdego komputera.

Rozwiązanie 2.

  1. Grupuj razem CounterName, CounterValue pary klucz-wartość:

    Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi 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
    

    Grupowanie par CounterName, CounterValue klucz-wartość umożliwia utworzenie słownika statystyk wolnego miejsca dla każdego komputera w następnym kroku.

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

  2. Utwórz torbę właściwości (słownik) o nazwie SpaceStats ze wszystkich statystyk wolnego miejsca zebranych dla każdej maszyny, podsumowywanie według komputera i filtrowanie dla maszyn o mniej niż 50% wolnego miejsca:

    Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi 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
    

    Zestaw wyników tego zapytania zawiera podsumowanie statystyk wolnego miejsca według maszyny, co było celem analizy wolnego miejsca!

    Ostatni wiersz zapytania filtruje maszyny o mniej niż 50% wolnego miejsca. Możesz chcieć monitorować lub analizować je dokładniej lub ponownie skonfigurować, aby upewnić się, że nie zabraknie miejsca.

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