Latihan - Mengidentifikasi komputer dengan penggunaan CPU yang tinggi
Di sini, Anda akan menulis kueri KQL untuk mengambil dan mengubah data dari Perf
tabel untuk mendapatkan pemahaman tentang komputer mana yang telah dicapai atau mendekati total kapasitas komputasi mereka, dan mesin mana yang kurang digunakan.
1. Tetapkan tujuan
Untuk mengatasi masalah performa, mitigasi potensi masalah, dan identifikasi peluang untuk beroperasi lebih efisien, Anda ingin menganalisis penggunaan unit pemrosesan pusat (CPU) komputer virtual di lingkungan IT Anda.
Untuk mengidentifikasi masalah performa terkait CPU dan peluang untuk menjadi lebih efisien, Anda memerlukan informasi tentang:
- Tren penggunaan CPU dari setiap komputer aktif.
- Penggunaan CPU mesin pada waktu puncak dan tenang.
2. Menilai log
Agen Windows dan Linux mengirim penghitung kinerja komponen perangkat keras, sistem operasi, dan aplikasi yang berjalan pada komputer yang dipantau ke Perf
tabel di Azure Monitor.
Mari kita jalankan kueri sederhana pada Perf
tabel untuk mengambil log dari 24 jam terakhir dan merasakan skema tabel dan data yang dipegang tabel:
Klik untuk menjalankan kueri di lingkungan demo Analitik Log
Perf // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day
Anda dapat melihat bahwa TimeGenerated
kolom , , ObjectName
Computer
, CounterName
, InstanceName
dan CounterValue
menyimpan data yang relevan dengan analisis kami.
Kolom mencantumkan ObjectName
nama semua objek tempat Azure Monitor mengumpulkan data dari komputer yang dipantau. Kolom CounterName
menyimpan nama berbagai penghitung kinerja yang dikumpulkan Azure Monitor. Kedua kolom ini menyimpan banyak nilai, banyak di antaranya muncul beberapa kali. Untuk melihat dengan jelas nilai yang berbeda dalam kolom ini dan menentukan penghitung mana yang relevan dengan analisis saat ini, mari kita jalankan kueri ini:
Klik untuk menjalankan kueri di lingkungan demo Analitik Log
Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values
Cuplikan layar ini memperlihatkan kombinasi ObjectName
nilai dan CounterName
yang berbeda dalam CounterName
kolom dalam 24 jam terakhir:
Penghitung % Processor Time
memberi Anda pemahaman tentang pemanfaatan prosesor, atau Central Processing Unit (CPU). Ini adalah informasi yang Anda butuhkan!
Mari kita nilai bagaimana kita dapat menggunakan data ini, dan operasi KQL mana yang dapat membantu mengekstrak dan mengubah data:
Kolom | Deskripsi | Tujuan analisis | Operasi KQL terkait |
---|---|---|---|
TimeGenerated |
Menunjukkan kapan komputer virtual menghasilkan setiap log. | Tentukan cakupan waktu analisis. | where TimeGenerated > ago(1d) Untuk informasi selengkapnya, lihat ago(), operator tempat, dan operator Numerik. |
Computer |
Komputer tempat peristiwa dikumpulkan. | Kaitkan penggunaan CPU dengan komputer tertentu. | summarize... by Computer Untuk informasi selengkapnya, lihat meringkas operator. |
ObjectName |
Menyimpan nama semua objek tempat tabel menyimpan data performa. | Pantau performa prosesor. | where ObjectName == "Processor" Untuk informasi selengkapnya, lihat operator == (sama dengan). |
CounterName |
Menyimpan nama semua penghitung kinerja dalam tabel. | Pantau penghitung % Processor Time kinerja. |
where CounterName == "% Processor Time" Untuk informasi selengkapnya, lihat operator mana dan operator == (sama dengan). |
InstanceName |
Mencantumkan instans objek yang dipantau. | Pantau semua inti prosesor. | where InstanceName == "_Total" Untuk informasi selengkapnya, lihat operator mana dan operator == (sama dengan). |
CounterValue |
Pengukuran yang dikumpulkan untuk penghitung. | Ambil pengukuran performa untuk penghitung % Processor Time kinerja. |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Untuk informasi selengkapnya, lihat meringkas operator, dan fungsi agregasi min(), max(), avg(), dan percentiles(). |
3. Tulis kueri Anda
Tulis kueri yang meringkas penggunaan CPU rata-rata, minimum, dan maksimum semua komputer selama sehari terakhir.
Ambil semua log yang dihasilkan dalam sehari terakhir yang melaporkan penghitung
% Processor Time
kinerja:Klik untuk menjalankan kueri di lingkungan demo Analitik Log.
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
Kueri ini mengambil semua log yang terkait dengan total pengukuran waktu prosesor dari hari terakhir.
Temukan nilai penghitung minimum, maksimum, dan rata-rata, dan hitung nilai penghitung persentil ke-90 dan ke-99 untuk setiap komputer:
Klik untuk menjalankan kueri di lingkungan demo Analitik Log
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
Kumpulan hasil kueri ini menunjukkan nilai penghitung persentil minimum, maksimum, rata-rata, ke-90 dan ke-99 untuk setiap komputer yang ada data di ruang kerja Analitik
% Processor Time
Log Anda.Filter hasil kueri untuk entri di mana
% Processor Time
nilai penghitung lebih tinggi dari 80 dalam rentang persentil ke-90 dan ke-99:Klik untuk menjalankan kueri di lingkungan demo Analitik Log
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
Kumpulan hasil kueri ini terdiri dari semua komputer yang nilainya 10% dan 15%
% Processor Time
teratas lebih dari 80.
Tantangan: Menambahkan informasi sistem operasi dari tabel Heartbeat ke hasil kueri
Anda sering kali bisa mendapatkan pemahaman yang lebih baik tentang hasil kueri Anda dengan menghubungkan informasi dari tabel yang berbeda dengan hasil kueri Anda dengan menggunakan join
operator. Untuk informasi selengkapnya, lihat bergabung dengan operator.
Dapatkah Anda menggunakan join
operator untuk menambahkan informasi tentang sistem operasi yang berjalan di setiap komputer, yang tersedia dalam Heartbeat
tabel, seperti yang kita lihat di latihan pertama?
Solusi:
Tambahkan informasi dari
Heartbeat
tabel tentang sistem operasi yang berjalan di setiap komputer dalam hasil kueri Anda:Klik untuk menjalankan kueri di lingkungan demo Analitik Log
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
Iterasi kueri ini menambahkan
Computer
kolom danOSType
dariHeartbeat
tabel ke hasil kueri sebelumnya.Kolom
Computer
sekarang muncul dua kali dalam hasil kueri - sekali dari kueri padaPerf
tabel dan sekali dari kueri padaHeartbeat
tabel. KolomComputer
dariHeartbeat
tabel telah digantiComputer1
namanya , tetapi kedua tabel berisi data yang identik. Memiliki kedua kolom memungkinkan korelasi hasil dari dua tabel, tetapi Anda sekarang dapat memfilter kolom duplikat.Computer1
Hapus kolom dari hasil kueri:Klik untuk menjalankan kueri di lingkungan demo Analitik Log
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
Kumpulan hasil kueri ini mencantumkan semua komputer yang mencapai kapasitas CPU penuh dan sistem operasi yang berjalan di setiap komputer, yang akan berguna untuk analisis lebih lanjut.