Alıştırma - Yüksek CPU kullanımına sahip makineleri tanımlama

Tamamlandı

Burada tablodaki Perf verileri almak ve dönüştürmek için KQL sorguları yazarak toplam işlem kapasitesine hangi makinelerin ulaştığını veya yaklaştığını ve hangi makinelerin yetersiz kullanılıp kullanılmadığını anlayacaksınız.

1. Hedefleri belirleme

Performans sorunlarını gidermek, olası sorunları azaltmak ve daha verimli çalışma fırsatlarını belirlemek için, BT ortamınızdaki sanal makinelerin merkezi işlem birimi (CPU) kullanımını analiz etmek istiyorsunuz.

CPU ile ilgili performans sorunlarını ve daha verimli hale gelme fırsatlarını belirlemek için aşağıdakiler hakkında bilgi almanız gerekir:

  • Her etkin makinenin CPU kullanım eğilimleri.
  • Makinelerin yoğun ve sessiz zamanlarda CPU kullanımı.

2. Günlükleri değerlendirme

Windows ve Linux aracıları, izlenen makinelerde çalışan donanım bileşenlerinin, işletim sistemlerinin ve uygulamaların performans sayaçlarını Azure İzleyici'deki tabloya Perf gönderir.

Şimdi son 24 saat içindeki Perf günlükleri almak için tabloda basit bir sorgu çalıştıralım ve tablo şemasını ve tablonun tuttuğu verileri algılayalım:

Log Analytics tanıtım ortamında sorgu çalıştırmak için tıklayın

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.

, , Computer, , ObjectNameCounterName, InstanceNameve CounterValue sütunlarının TimeGeneratedçözümlememizle ilgili verileri barındırdığını görebilirsiniz.

sütunu, ObjectName Azure İzleyici'nin izlenen makinelerden veri topladığı tüm nesnelerin adlarını listeler. sütunu, CounterName Azure İzleyici'nin topladığı çeşitli performans sayaçlarının adlarını tutar. Bu sütunların her ikisi de birçok değer içerir ve bunların çoğu birden çok kez görünür. Bu sütunlardaki ayrı değerleri net bir şekilde görmek ve geçerli çözümlemeyle ilgili sayaçları belirlemek için şu sorguyu çalıştıralım:

Log Analytics tanıtım ortamında sorgu çalıştırmak için tıklayın

Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values

Bu ekran görüntüsünde, son 24 saat içinde sütundaki CounterName ve CounterName değerlerinin farklı birleşimleri ObjectName gösterilmektedir:

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

Sayaç % Processor Time , işlemcinin veya Merkezi İşlem Birimi'nin (CPU) kullanımını anlamanızı sağlar. Bu, ihtiyacınız olan bilgilerdir!

Şimdi bu verileri nasıl kullanabileceğimizi ve hangi KQL işlemlerinin verileri ayıklamaya ve dönüştürmeye yardımcı olabileceğini değerlendirelim:

Sütun Açıklama Analiz hedefi İlgili KQL işlemleri
TimeGenerated Sanal makinenin her bir günlüğü ne zaman ürettiğini gösterir. Analizin zaman kapsamını tanımlayın. where TimeGenerated > ago(1d)
Daha fazla bilgi için bkz . ago(), where işleci ve Sayısal işleçler.
Computer Olayın toplandığı bilgisayar. CPU kullanımını belirli bir bilgisayarla ilişkilendirin. summarize... by Computer
Daha fazla bilgi için bkz . summarize işleci.
ObjectName Tablonun performans verilerini barındırdığı tüm nesnelerin adlarını tutar. İşlemcinin performansını izleyin. where ObjectName == "Processor"
Daha fazla bilgi için bkz . == (eşittir) işleci.
CounterName Tablodaki tüm performans sayaçlarının adlarını tutar. Performans sayacını % Processor Time izleyin. where CounterName == "% Processor Time"
Daha fazla bilgi için bkz . where işleci ve == (eşittir) işleci.
InstanceName İzlenen nesnenin izlenen örneklerini listeler. Tüm işlemci çekirdeklerini izleyin. where InstanceName == "_Total"
Daha fazla bilgi için bkz . where işleci ve == (eşittir) işleci.
CounterValue Sayaç için toplanan ölçüm. Performans sayacı için % Processor Time performans ölçümlerini alın. summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99)
Daha fazla bilgi için bkz . summarize işleci ve min(), max(), avg()ve percentiles() toplama işlevleri.

3. Sorgunuzu yazın

Son gün içindeki tüm makinelerin ortalama, en düşük ve en yüksek CPU kullanımını özetleyen bir sorgu yazın.

  1. Geçmiş günde oluşturulan ve performans sayacını % Processor Time bildiren tüm günlükleri alın:

    Log Analytics tanıtım ortamında sorgu çalıştırmak için tıklayın.

    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  
    

    Bu sorgu, geçmiş güne ait toplam işlemci zamanı ölçümleriyle ilgili tüm günlükleri alır.

    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. En düşük, en yüksek ve ortalama sayaç değerlerini bulun ve her bilgisayar için 90. ve 99. yüzdebirlik sayaç değerlerini hesaplayın:

    Log Analytics tanıtım ortamında sorgu çalıştırmak için tıklayın

    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 
    

    Bu sorgunun sonuç kümesi, Log Analytics çalışma alanınızda veri bulunan her bilgisayar için en düşük, en yüksek, ortalama, 90. ve 99. yüzdebirlik % Processor Time sayaç değerlerini gösterir.

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

  3. Sayaç değerinin 90. ve 99. yüzdebirlik aralığında 80'den yüksek olduğu % Processor Time girdiler için sorgu sonuçlarını filtreleyin:

    Log Analytics tanıtım ortamında sorgu çalıştırmak için tıklayın

    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
    

    Bu sorgunun sonuç kümesi, ilk %10 ve % % Processor Time 15 değerlerinin 80'in üzerinde olduğu tüm bilgisayarlardan oluşur.

    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.

Sınama: Sinyal tablosundaki işletim sistemi bilgilerini sorgu sonuçlarına ekleme

Genellikle işlecini kullanarak join farklı bir tablodaki bilgileri sorgu sonuçlarınızla ilişkilendirerek sorgu sonuçlarınızı daha iyi anlayabilirsiniz. Daha fazla bilgi için bkz . join işleci.

İlk alıştırmada join gördüğümüz gibi, her bilgisayarda çalışan ve tabloda bulunan Heartbeat işletim sistemi hakkında bilgi eklemek için işlecini kullanabilir misiniz?

Çözüm:

  1. Sorgu sonuçlarınızdaki Heartbeat bilgisayarların her birinde çalışan işletim sistemi hakkında tablodan bilgi ekleyin:

    Log Analytics tanıtım ortamında sorgu çalıştırmak için tıklayın

    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 
    

    Sorgunun bu yinelemesi, tablodaki Computer ve OSType sütunlarını Heartbeat önceki sorgu sonuçlarına ekler.

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

    Sütun Computer şimdi sorgu sonuçlarında iki kez görünür: bir kez tablodaki Perf sorgudan ve bir kez de tablodaki Heartbeat sorgudan. Computer Tablodaki Heartbeat sütun olarak yeniden adlandırıldıComputer1, ancak iki tablo aynı verileri içeriyor. Her iki sütunun da olması, iki tablodan gelen sonuçların bağıntısını sağlar, ancak artık yinelenen sütunu filtreleyebilirsiniz.

  2. Computer1 Sütunu sorgu sonuçlarından kaldırın:

    Log Analytics tanıtım ortamında sorgu çalıştırmak için tıklayın

    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 
    

    Bu sorgunun sonuç kümesi, tam CPU kapasitesine ulaşan tüm bilgisayarları ve her bilgisayarda çalışan işletim sistemini listeler. Bu, daha fazla analiz için yararlı olacaktır.

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