Ćwiczenie — podsumowanie statystyk wolnego miejsca według komputera
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:
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
Liczniki wydajności, które zawierają informacje o używanym i wolnym miejscu, to % Used Space
, % Free Space
i 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. |
|
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" Aby uprościć wyniki i ułatwić dalszą analizę:
|
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 Space liczników wydajności , % Free Space i Free Megabytes . |
|
3. Napisz zapytanie
Pobierz wszystkie dzienniki wygenerowane w ciągu ostatniego dnia, które zgłosiły
% Used Space
liczniki wydajności dlaLogicalDisk
obiektów iLogical Disk
,% Free Space
iFree 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.
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.
Aby ułatwić analizę:
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ę.
Przekonwertuj
Free Megabytes
na gigabajty (Free Megabytes
wartość * 0,001 = bezpłatne gigabajty) i zmień etykietęFree Megabytes
naOverallFreeSpaceInGB
: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.
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.
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.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.