Latihan - Mengidentifikasi komputer dengan penggunaan CPU yang tinggi

Selesai

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 

Screenshot that shows the results of a query on the Perf table with the ObjectName, CounterName, InstanceName, and CounterValue columns highlighted.

Anda dapat melihat bahwa TimeGeneratedkolom , , ObjectNameComputer, CounterName, InstanceNamedan 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:

Screenshot that shows the results of the distinct CounterName query on the Perf table with the Percentage Processor Time value highlighted.

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.

  1. 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.

    Screenshot that shows the results of a query for all logs generated in the past day that reported the Percentage Processor Time performance counter.

  2. 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.

    Screenshot that shows the minimum, maximum, average, 90th and 99th percentile results of the query on the Perf table.

  3. 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.

    Screenshot that shows the results of a query that filters for entries where the Percentage Processor Time counter value is higher than 80 in the 90th and 99th percentile range.

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:

  1. 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 dan OSType dari Heartbeat tabel ke hasil kueri sebelumnya.

    Screenshot that shows the results of a query that adds operating system information from the Heartbeat table to the previous query results.

    Kolom Computer sekarang muncul dua kali dalam hasil kueri - sekali dari kueri pada Perf tabel dan sekali dari kueri pada Heartbeat tabel. Kolom Computer dari Heartbeat tabel telah diganti Computer1namanya , tetapi kedua tabel berisi data yang identik. Memiliki kedua kolom memungkinkan korelasi hasil dari dua tabel, tetapi Anda sekarang dapat memfilter kolom duplikat.

  2. 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.

    Screenshot that shows the results of a query that removes the Computer 1 column from the previous query results.