Ćwiczenie — identyfikowanie maszyn z wysokim użyciem procesora CPU
W tym miejscu napiszesz zapytania KQL, aby pobrać i przekształcić dane z Perf
tabeli, aby zrozumieć, które maszyny osiągnęły lub zbliżają się do ich całkowitej pojemności obliczeniowej i które maszyny są niedostatecznie wykorzystane.
1. Ustawianie celów
Aby rozwiązać problemy z wydajnością, rozwiązać potencjalne problemy i zidentyfikować możliwości wydajnego działania, chcesz przeanalizować użycie centralnej jednostki przetwarzania (CPU) maszyn wirtualnych w środowisku IT.
Aby zidentyfikować problemy z wydajnością związane z procesorem CPU i możliwości uzyskania większej wydajności, potrzebne są informacje o:
- Trendy użycia procesora CPU dla każdej aktywnej maszyny.
- Użycie procesora CPU maszyn w godzinach szczytu i cichych.
2. Ocena dzienników
Agenci systemu Windows i Linux wysyłają liczniki wydajności składników sprzętowych, systemów operacyjnych i aplikacji działających na monitorowanych maszynach do Perf
tabeli w usłudze Azure Monitor.
Uruchommy proste zapytanie w Perf
tabeli, aby pobrać dzienniki z ostatnich 24 godzin i poznać schemat tabeli oraz dane przechowywane w tabeli:
Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
Perf // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day
Zobaczysz, że TimeGenerated
kolumny , Computer
, CounterName
ObjectName
, InstanceName
i CounterValue
przechowują dane istotne dla naszej analizy.
Kolumna ObjectName
zawiera listę nazw wszystkich obiektów, dla których usługa Azure Monitor zbiera dane z monitorowanych maszyn. Kolumna CounterName
zawiera nazwy różnych liczników wydajności zbieranych przez usługę Azure Monitor. Obie te kolumny przechowują wiele wartości, z których wiele jest wyświetlanych wielokrotnie. Aby wyraźnie zobaczyć różne wartości w tych kolumnach i określić, które liczniki są istotne dla bieżącej analizy, uruchommy to zapytanie:
Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values
Ten zrzut ekranu przedstawia różne kombinacje ObjectName
wartości i CounterName
w kolumnie w CounterName
ciągu ostatnich 24 godzin:
Licznik % Processor Time
zapewnia zrozumienie wykorzystania procesora lub procesora cpu (Central Processing Unit). To są potrzebne informacje!
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. | Monitorowanie wydajności procesora. | where ObjectName == "Processor" Aby uzyskać więcej informacji, zobacz == (equals) operator. |
CounterName |
Przechowuje nazwy wszystkich liczników wydajności w tabeli. | % Processor Time Monitoruj licznik wydajności. |
where CounterName == "% Processor Time" Aby uzyskać więcej informacji, zobacz , gdzie operator i == (equals) operator. |
InstanceName |
Wyświetla listę monitorowanych wystąpień monitorowanego obiektu. | Monitoruj wszystkie rdzenie procesora. | where InstanceName == "_Total" Aby uzyskać więcej informacji, zobacz , gdzie operator i == (equals) operator. |
CounterValue |
Pomiar zebrany dla licznika. | Pobieranie pomiarów wydajności dla licznika % Processor Time wydajności. |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Aby uzyskać więcej informacji, zobacz operator podsumowania oraz funkcje agregacji min(), max(), avg()i percentyls(). |
3. Napisz zapytanie
Napisz zapytanie, które podsumowuje średnie, minimalne i maksymalne użycie procesora CPU wszystkich maszyn w ciągu ostatniego dnia.
Pobierz wszystkie dzienniki wygenerowane w ciągu ostatniego dnia, które zgłosiły
% Processor Time
licznik wydajności:Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics.
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements
To zapytanie pobiera wszystkie dzienniki związane z całkowitymi pomiarami czasu procesora z ostatniego dnia.
Znajdź wartości minimalnej, maksymalnej i średniej licznika oraz oblicz wartości licznika 90 i 99 percentyla dla każdego komputera:
Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer
Zestaw wyników tego zapytania przedstawia minimalne, maksymalne, średnie, 90 i 99. wartości licznika percentyla
% Processor Time
dla każdego komputera, dla którego znajdują się dane w obszarze roboczym usługi Log Analytics.Przefiltruj wyniki zapytania dla wpisów, w których wartość licznika
% Processor Time
jest wyższa niż 80 w zakresie 90 i 99. percentylu:Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 80
Zestaw wyników tego zapytania składa się ze wszystkich komputerów, dla których 10% i 15%
% Processor Time
wartości są ponad 80.
Wyzwanie: Dodawanie informacji o systemie operacyjnym z tabeli Puls do wyników zapytania
Często możesz lepiej zrozumieć wyniki zapytania, korelując informacje z innej tabeli do wyników zapytania przy użyciu join
operatora . Aby uzyskać więcej informacji, zobacz operator sprzężenia.
Czy można użyć join
operatora , aby dodać informacje o systemie operacyjnym uruchomionym na każdym komputerze, który jest dostępny w Heartbeat
tabeli, jak pokazano w pierwszym ćwiczeniu?
Rozwiązanie 2.
Dodaj informacje z
Heartbeat
tabeli o systemie operacyjnym uruchomionym na każdym z komputerów w wynikach zapytania:Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system
Ta iteracja zapytania dodaje
Computer
kolumny iOSType
zHeartbeat
tabeli do poprzednich wyników zapytania.Kolumna
Computer
jest teraz wyświetlana dwa razy w wynikach zapytania — raz z zapytania wPerf
tabeli i raz z zapytania wHeartbeat
tabeli. NazwaComputer
kolumny zHeartbeat
tabeli została zmienionaComputer1
, ale obie tabele zawierają identyczne dane. Posiadanie obu kolumn umożliwia korelowanie wyników z dwóch tabel, ale teraz można odfiltrować zduplikowaną kolumnę.Usuń kolumnę
Computer1
z wyników zapytania:Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system | project-away Computer1 // Removes the "Computer1" column from the query results
Zestaw wyników tego zapytania zawiera listę wszystkich komputerów, które osiągnęły pełną pojemność procesora CPU i system operacyjny uruchomiony na każdym komputerze, co będzie pomocne w dalszej analizie.