Latihan - Meringkas statistik ruang kosong berdasarkan komputer

Selesai

Di sini, Anda akan mengambil dan mengubah data dari Perf tabel, menggunakan kueri KQL, untuk menganalisis ruang kosong data pengelogan komputer ke ruang kerja Analitik Log Anda.

1. Tetapkan tujuan

Ingat bahwa tim IT Anda telah melihat masalah berulang yang terkait dengan ruang kosong yang tidak mencukup pada komputer virtual.

Untuk menganalisis penggunaan ruang kosong mesin yang berjalan di lingkungan IT Anda, Anda memerlukan informasi tentang:

  • Total ruang kosong yang tersedia di setiap komputer.
  • Persentase ruang yang digunakan pada setiap komputer.

2. Menilai log

Seperti yang kita lihat latihan sebelumnya, Perf tabel menyediakan informasi tentang performa komponen perangkat keras, sistem operasi, dan aplikasi.

Kami mencatat bahwa kolom tabel ObjectName mencantumkan nama semua objek yang Perf dipantau dan CounterName kolom menyimpan nama berbagai penghitung kinerja yang dikumpulkan Azure Monitor. Kami juga melihat bahwa kedua kolom ini menyimpan banyak nilai, yang banyak di antaranya muncul beberapa kali.

Mari kita jalankan kueri pada Perf tabel untuk mencantumkan nilai yang berbeda ObjectName :

Klik untuk menjalankan kueri di lingkungan demo Analitik Log

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

Kumpulan hasil kueri ini menyertakan semua ObjectName nilai yang saat ini ada dalam tabel:

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

Dalam skenario kami, kami tertarik untuk menganalisis komputer virtual, sehingga objek yang ingin kita lihat adalah LogicalDisk dan Logical Disk (untuk memantau memori di mesin fisik, Anda akan melihat memory objek). Alasan ada dua objek bernama yang sama adalah bahwa LogicalDisk adalah nama objek dalam rekaman Windows saat Logical Disk digunakan dalam rekaman Linux.

Untuk mencantumkan nama penghitung yang berbeda yang dikumpulkan Azure Monitor untuk LogicalDisk objek dan Logical Disk , jalankan:

Klik untuk menjalankan kueri di lingkungan demo Analitik Log

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

Kumpulan hasil kueri ini mencakup semua penghitung kinerja yang dikumpulkan untuk LogicalDisk objek dan 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.

Penghitung kinerja yang menyediakan informasi tentang ruang yang digunakan dan kosong adalah % Used Space, % Free Space, dan Free Megabytes. Kami memiliki dua penghitung serupa - % Free Space dan % Used Space - dikumpulkan dari catatan Windows dan Linux, masing-masing.

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. Untuk analisis Anda, Anda tertarik dengan LogicalDisk objek dan Logical Disk . Pantau disk logis di komputer virtual. where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk"
Untuk informasi selengkapnya, lihat operator mana dan operator == (sama dengan).
CounterName Menyimpan nama semua penghitung kinerja dalam tabel.
  • Pantau penghitung yang terkait dengan ruang kosong.
  • Ganti nama % Used Space menjadi % Free Space (secara paralel, konversikan terkait CounterValue)
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
Untuk menyederhanakan hasil dan memfasilitasi analisis lebih lanjut:
  • Ubah % Used Space ke % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Ubah Free Megabytes ke OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Untuk informasi selengkapnya, lihat operator mana dan operator == (sama dengan).
InstanceName Mencantumkan instans objek yang dipantau. Pantau semua drive pada komputer virtual. InstanceName == "_Total"
Untuk informasi selengkapnya, lihat operator mana dan operator == (sama dengan).
CounterValue Pengukuran yang dikumpulkan untuk penghitung. Ambil pengukuran performa untuk penghitung % Used Spacekinerja , % Free Space, dan Free Megabytes .
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Untuk informasi selengkapnya, lihat operator mana dan operator == (sama dengan).

3. Tulis kueri Anda

  1. Ambil semua log yang dihasilkan dalam sehari terakhir yang melaporkan penghitung % Used Spacekinerja , , % Free Spacedan Free Megabytes untuk LogicalDisk objek dan Logical Disk :

    Klik untuk menjalankan kueri di lingkungan demo Analitik Log

    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  
    

    Kumpulan hasil kueri ini kemungkinan mencakup beberapa rekaman untuk setiap komputer tempat Anda mengumpulkan penghitung kinerja yang terkait dengan ruang kosong.

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

  2. Filter untuk nilai penghitung terakhir yang dikumpulkan untuk setiap penghitung yang dilaporkan oleh setiap komputer virtual:

    Klik untuk menjalankan kueri di lingkungan demo Analitik Log

    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
    

    Anda sekarang memiliki nilai penghitung terakhir yang dilaporkan untuk setiap penghitung terkait ruang kosong dari setiap komputer.

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

  3. Untuk memfasilitasi analisis:

    1. Konversikan % Used Space nilai penghitung menjadi % Free Space (dengan mengurangi % Used Space nilai dari 100%) dan ubah nama % Used Space kolom menjadi % Free Space:

      Klik untuk menjalankan kueri di lingkungan demo Analitik Log

      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
      

      Kumpulan hasil kueri ini menyajikan persentase ruang kosong pada komputer Windows dan Linux dengan cara yang sama, yang membuat analisis lebih jelas dan lebih mudah.

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

    2. Konversi Free Megabytes ke Gigabyte (Free Megabytes nilai * 0,001 = Gigabyte Gratis) dan relabel Free Megabytes ke OverallFreeSpaceInGB:

      Klik untuk menjalankan kueri di lingkungan demo Analitik Log

      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
      

      Anda sekarang bisa mendapatkan gambaran yang jelas tentang total ruang kosong pada setiap mesin dalam gigabyte dan sebagai persentase dari total memori komputer.

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

Tantangan: Menggabungkan statistik ruang kosong untuk setiap komputer

Kumpulan hasil kueri kami sejauh ini mencakup dua baris untuk setiap komputer - satu baris menunjukkan ruang kosong keseluruhan di Gigabyte dan yang lain menunjukkan persentase ruang kosong yang tersedia.

Dapatkah Anda membuat kamus yang menggabungkan kedua statistik ruang kosong ini bersama-sama untuk setiap komputer virtual?

Petunjuk:

  • Gunakan fungsi bag_pack() untuk membuat pasangan kunci-nilai untuk masing-masing dari dua penghitung kinerja.
  • Gunakan fungsi agregasi make_bag() untuk menggabungkan kedua nilai kunci-nilai untuk setiap komputer.

Solusi:

  1. Kelompokkan pasangan CounterName, CounterValue kunci-nilai:

    Klik untuk menjalankan kueri di lingkungan demo Analitik Log

    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
    

    Mengelompokkan CounterName, CounterValue pasangan kunci-nilai memungkinkan Anda membuat kamus statistik ruang kosong untuk setiap komputer di langkah berikutnya.

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

  2. Buat kantong properti (kamus), yang disebut SpaceStats, dari semua statistik ruang kosong yang dikumpulkan untuk setiap komputer, ringkas menurut komputer, dan filter untuk mesin dengan ruang kosong kurang dari 50%:

    Klik untuk menjalankan kueri di lingkungan demo Analitik Log

    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
    

    Kumpulan hasil kueri ini meringkas statistik ruang kosong berdasarkan komputer, yang merupakan tujuan analisis ruang kosong Anda!

    Baris terakhir filter kueri untuk mesin dengan ruang kosong kurang dari 50%. Anda mungkin ingin memantau atau menganalisis lebih dekat, atau mengonfigurasi ulang untuk memastikan mereka tidak kehabisan ruang.

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