Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, en iyi performansı elde etmek için günlük araması uyarılarının nasıl yazıldığı ve dönüştürüldüğü açıklanır. İyileştirilmiş sorgular, sık çalıştırılan uyarıların gecikme süresini ve yükünü azaltır.
Günlük araması uyarı sorgusu yazmaya başlama
Uyarı sorguları, Log Analytics'te sorunu gösteren günlük verilerini sorgulamaktan başlar. Neler keşfedebileceğinizi anlamak için bkz . Azure İzleyici Log Analytics'te sorguları kullanma. Kendi sorgunuzu yazmaya da başlayabilirsiniz.
Sorgunuzun uyarının kendisini değil sorunu tanımladığından emin olun
Uyarı akışı, sorunu belirten sonuçları bir uyarıya dönüştürmek için oluşturulmuştu. Örneğin, aşağıdaki gibi bir sorgu söz konusu olduğunda:
SecurityEvent
| where EventID == 4624
Kullanıcının amacı uyarı vermekse, bu olay türü gerçekleştiğinde uyarı mantığı sorguya eklenir count . Çalıştırılacak sorgu şu şekilde olacaktır:
SecurityEvent
| where EventID == 4624
| count
Sorguya uyarı mantığı eklemeye gerek yoktur ve bunu yapmak sorunlara bile neden olabilir. Önceki örnekte, sorgunuza count eklerseniz, her zaman 1 değeri elde edilir çünkü uyarı hizmeti count gerçekletirir count.
Sınırdan kaçının ve işleçleri alın
limit ve take sorgularda kullanılması, sonuçların zamanla tutarlı olmaması nedeniyle uyarıların gecikme süresini ve yükünü artırabilir. Bunları yalnızca gerekirse kullanın.
Kayıt sorgusu kısıtlamaları
Azure İzleyici'deki günlük sorguları bir tablo, search, veya union işleçle başlamaktadır.
Günlük araması uyarı kurallarıyla ilgili sorgular, sorgu performansını ve sonuçların ilgi düzeyini artıran net bir kapsam tanımlamak için her zaman bir tabloyla başlamalıdır. Uyarı kurallarındaki sorgular sık sık çalıştırılır.
search ve union kullanmak, birden çok tabloda tarama gerektiğinden uyarıya gecikme süresi ekleyen aşırı ek yüke neden olabilir. Bu işleçler, uyarı hizmetinin sorguyu iyileştirme becerisini de azaltır.
Kaynaklar arası sorgular dışında search veya union işleçlerini kullanan günlük araması uyarı kurallarının oluşturulmasını veya değiştirilmesini desteklemiyoruz.
Örneğin, aşağıdaki uyarı sorgusunun kapsamı SecurityEvent tablosu olarak belirlenmiştir ve belirli bir olay kimliğini arar. Sorgunun işlemesi gereken tek tablodur.
SecurityEvent
| where EventID == 4624
Kaynaklar arası sorgular kullanan günlük araması uyarı kuralları, bu değişiklikten etkilenmez çünkü kaynaklar arası sorgular, sorgu kapsamını belirli kaynaklarla sınırlayan bir tür union kullanır. Aşağıdaki örnek geçerli bir log arama uyarı sorgusu olabilir.
union
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
workspace('00000000-0000-0000-0000-000000000003').Perf
Not
Kaynaklar arası sorgular yeni scheduledQueryRules API'sinde desteklenir. Hala eski Log Analytics Uyarı API'sini günlük araması uyarıları oluşturmak için kullanıyorsanız, geçiş hakkında bilgi edinmek için Eski kural yönetimini geçerli Azure İzleyici Zamanlanmış Sorgu Kuralları API'sine yükseltme sayfasına bakın.
Örnekler
Aşağıdaki örnekler, search ve union kullanan günlük sorgularını içerir. Uyarı kurallarında kullanmak üzere bu sorguları değiştirmek için kullanabileceğiniz adımlar sağlar.
Örnek 1
Aşağıdaki sorguyu kullanarak search üzerinden performans bilgilerini alan bir günlük araması uyarı kuralı oluşturmak istiyorsunuz.
search *
| where Type == 'Perf' and CounterName == '% Free Space'
| where CounterValue < 30
Bu sorguyu değiştirmek için, özelliklerin ait olduğu tabloyu tanımlamak için aşağıdaki sorguyu kullanarak başlayın:
search * | where CounterName == '% Free Space' | summarize by $tableBu sorgunun sonucu CounterName özelliğinin Perf tablosundan geldiğini gösterir.
Uyarı kuralı için kullanacağınız aşağıdaki sorguyu oluşturmak için bu sonucu kullanın:
Perf | where CounterName == '% Free Space' | where CounterValue < 30
Örnek 2
Aşağıdaki sorguyu kullanarak search üzerinden performans bilgilerini alan bir günlük araması uyarı kuralı oluşturmak istiyorsunuz.
search ObjectName =="Memory" and CounterName=="% Committed Bytes In Use"
| summarize Avg_Memory_Usage =avg(CounterValue) by Computer
| where Avg_Memory_Usage between(90 .. 95)
Bu sorguyu değiştirmek için, özelliklerin ait olduğu tabloyu tanımlamak için aşağıdaki sorguyu kullanarak başlayın:
search ObjectName=="Memory" and CounterName=="% Committed Bytes In Use" | summarize by $tableBu sorgunun sonucunda ObjectName ve CounterName özelliklerinin Perf tablosundan geldiği gösterilir.
Uyarı kuralı için kullanacağınız aşağıdaki sorguyu oluşturmak için bu sonucu kullanın:
Perf | where ObjectName =="Memory" and CounterName=="% Committed Bytes In Use" | summarize Avg_Memory_Usage=avg(CounterValue) by Computer | where Avg_Memory_Usage between(90 .. 95)
Örnek 3
Aşağıdaki sorguyu kullanarak hem search hem de union kullanarak performans bilgilerini almak için bir günlük araması uyarı kuralı oluşturmak istiyorsunuz:
search (ObjectName == "Processor" and CounterName == "% Idle Time" and InstanceName == "_Total")
| where Computer !in (
union *
| where CounterName == "% Processor Utility"
| summarize by Computer)
| summarize Avg_Idle_Time = avg(CounterValue) by Computer
Bu sorguyu değiştirmek için, sorgunun ilk bölümündeki özelliklerin ait olduğu tabloyu tanımlamak için aşağıdaki sorguyu kullanarak başlayın:
search (ObjectName == "Processor" and CounterName == "% Idle Time" and InstanceName == "_Total") | summarize by $tableBu sorgunun sonucu, tüm bu özelliklerin Performans tablosundan geldiğini gösterir.
unionvewithsourcekomutunu kullanarak hangi kaynak tablonun her satıra katkıda bulunduğunu belirleyin.union withsource=table * | where CounterName == "% Processor Utility" | summarize by tableBu sorgunun sonucu, bu özelliklerin Perf tablosundan da geldiğini gösterir.
Uyarı kuralı için kullanacağınız aşağıdaki sorguyu oluşturmak için bu sonuçları kullanın:
Perf | where ObjectName == "Processor" and CounterName == "% Idle Time" and InstanceName == "_Total" | where Computer !in ( (Perf | where CounterName == "% Processor Utility" | summarize by Computer)) | summarize Avg_Idle_Time = avg(CounterValue) by Computer
Örnek 4
İki search sorgunun sonuçlarını birleştiren aşağıdaki sorguyu kullanarak günlük araması uyarı kuralı oluşturmak istiyorsunuz:
search Type == 'SecurityEvent' and EventID == '4625'
| summarize by Computer, Hour = bin(TimeGenerated, 1h)
| join kind = leftouter (
search in (Heartbeat) OSType == 'Windows'
| summarize arg_max(TimeGenerated, Computer) by Computer , Hour = bin(TimeGenerated, 1h)
| project Hour , Computer
) on Hour
Sorguyu değiştirmek için, birleştirmenin sol tarafındaki özellikleri içeren tabloyu tanımlamak için aşağıdaki sorguyu kullanarak başlayın:
search Type == 'SecurityEvent' and EventID == '4625' | summarize by $tableSonuç, birleştirmenin sol tarafındaki özelliklerin SecurityEvent tablosuna ait olduğunu gösterir.
Birleştirmenin sağ tarafındaki özellikleri içeren tabloyu tanımlamak için aşağıdaki sorguyu kullanın:
search in (Heartbeat) OSType == 'Windows' | summarize by $tableSonuç, birleştirmenin sağ tarafındaki özelliklerin Heartbeat tablosuna ait olduğunu gösterir.
Uyarı kuralı için kullanacağınız aşağıdaki sorguyu oluşturmak için bu sonuçları kullanın:
SecurityEvent | where EventID == '4625' | summarize by Computer, Hour = bin(TimeGenerated, 1h) | join kind = leftouter ( Heartbeat | where OSType == 'Windows' | summarize arg_max(TimeGenerated, Computer) by Computer , Hour = bin(TimeGenerated, 1h) | project Hour , Computer ) on Hour
Sonraki adımlar
- Azure İzleyici'de günlük araması uyarıları hakkında bilgi edinin.
- Günlük sorguları hakkında bilgi edinin.