Azure İzleyici’de günlük sorgularını kullanmaya başlama
Not
En az bir sanal makineden veri topluyorsanız, bu alıştırmayı kendi ortamınız üzerinde çalışabilirsiniz. Diğer senaryolar için, çok sayıda örnek veriiçeren tanıtım ortamımızı kullanın.
Kusto Sorgu Dili'nde sorgulamayı zaten biliyorsanız ancak kaynak türlerine göre hızlı bir şekilde yararlı sorgular oluşturmanız gerekirse Log Analytics'te sorguları kullanma makalesinde kayıtlı örnek sorgular bölmesine Azure İzleyici bakın.
Bu öğreticide, günlük sorgularını Azure İzleyici. Makalede şunların nasıl olduğu size gösterir:
- Sorgu yapısını anlama.
- Sorgu sonuçlarını sıralama.
- Sorgu sonuçlarını filtrele.
- Bir zaman aralığı belirtin.
- Sonuçlara hangi alanların dahil olduğunu seçin.
- Özel alanları tanımlama ve kullanma.
- Sonuçları toplama ve grupla.
Log Analytics'i kullanma öğreticisi için bkz. Azure portal Log Analytics Kullanmaya başlayın ile Azure İzleyici.
Web'de günlük sorguları hakkında daha fazla Azure İzleyici için bkz.Azure İzleyici.
Bu öğreticinin video sürümü şöyledir:
Yeni sorgu yazma
Sorgular bir tablo adıyla veya arama komutuyla başlayabilir. Bir tablo adı ile başlamak iyi bir fikirdir çünkü sorgu için net bir kapsam tanımlar ve hem sorgu performansını hem de sonuçların ilgi düzeyini artırır.
Not
Azure İzleyici tarafından kullanılan Kusto sorgu dili büyük/Azure İzleyici duyarlıdır. Dil anahtar sözcükleri genellikle küçük harfle yazılır. Sorguda tablo veya sütun adlarını kullanırken şema bölmesinde gösterildiği gibi doğru büyük/küçük harf kullanımını mutlaka kullanın.
Tablo tabanlı sorgular
Azure İzleyici, günlük verilerini her birinde birden çok sütun bulunan tablolar halinde düzenler. Tüm tablolar ve sütunlar Analiz portalında Log Analytics'in şema bölmesinde gösterilir. İlgilenen bir tabloyu belirleyin ve ardından biraz veriye göz atabilirsiniz:
SecurityEvent
| take 10
Yukarıdaki sorgu, SecurityEvent tablosundan belirli bir sırada 10 sonuç döndürür. Bu, bir tabloya göz atmanın ve yapısını ve içeriğini anlamanın yaygın bir yoludur. Şimdi nasıl yerleşik olduğunu incelenin:
- Sorgu, sorgunun kapsamını tanımlayan SecurityEvent tablo adıyla başlar.
- Kanal (|) karakteri komutları birbirinden ayırarak ilk komutun çıkışının bir sonrakinin girişi olduğunu belirtir. Herhangi bir sayıda kanallı öğe eklemek için.
- Kanaldan sonra, tablodan belirli sayıda rastgele kayıt döndüren take komutu yer alır.
Eklemeden bile sorguyu | take 10 çalıştırabilirsiniz. Komut hala geçerli olsa da 10.000 adede kadar sonuç getirebilirsiniz.
Arama sorguları
Arama sorguları daha az yapılandırılmıştır ve sütunlarından herhangi birsinde belirli bir değer içeren kayıtları bulmak için genellikle daha uygun olur:
search in (SecurityEvent) "Cryptographic"
| take 10
Bu sorgu SecurityEvent tablosunda "Cryptographic" tümceciği içeren kayıtları arar. Bu kayıtların 10'ları döndürülür ve görüntülenir. bölümünü atlar ve yalnızca çalıştırsanız, arama tüm tabloların üzerinden gider ve bu daha in (SecurityEvent) uzun sürer ve daha az verimli search "Cryptographic" olur.
Önemli
Arama sorguları normalde tablo tabanlı sorgulardan daha yavaştır çünkü daha fazla veri işlemeleri gerekir.
Sıralama ve üst
Take birkaç kayıt almak için yararlı olsa da, sonuçlar seçilir ve belirli bir sırada görüntülenmez. Sıralanmış bir görünüm elde etmek için tercih edilen sütuna göre sıralaabilirsiniz:
SecurityEvent
| sort by TimeGenerated desc
Ancak yukarıdaki sorgu çok fazla sonuç getirenin yanı sıra biraz zaman da zaman alsa da. Sorgu, SecurityEvent tablonun tamamını TimeGenerated sütununa göre sıralar. Ardından Analytics portalı, ekranı yalnızca 10.000 kayıtla sınırlar. Bu yaklaşım elbette en uygun yaklaşım değildir.
Yalnızca en son 10 kaydı elde etmek için en iyi yol, sunucu tarafındaki tablonun tamamını sıralana ve ardından en üst kayıtları döndüren top kullanmaktır:
SecurityEvent
| top 10 by TimeGenerated
Azalan düzen varsayılan sıralama düzenidir, bu nedenle genellikle desc bağımsız değişkenlerini atlarnız. Çıktı şuna benzer:

Where işleci: bir koşula göre filtreleme
Filtreler, adlarıyla belirtilen şekilde verileri belirli bir koşula göre filtreler. Bu, sorgu sonuçlarını ilgili bilgilerle sınırlamanın en yaygın yoludur.
Bir sorguya filtre eklemek için where işlecinin ardından bir veya daha fazla koşullar ekleyin. Örneğin, aşağıdaki sorgu yalnızca Düzey'in 8'e eşit olduğu SecurityEvent kayıtlarını döndürür:
SecurityEvent
| where Level == 8
Filtre koşulları yazarak aşağıdaki ifadeleri kullanabilirsiniz:
| İfade | Açıklama | Örnek |
|---|---|---|
| == | Eşitliği denetleme (büyük/büyük/büyük harfe duyarlı) |
Level == 8 |
| =~ | Eşitliği denetleme (büyük/büyük/harfe duyarlı değil) |
EventSourceName =~ "microsoft-windows-security-auditing" |
| !=, <> | Eşitsizliği denetleme (her iki ifade de aynıdır) |
Level != 4 |
| and, or | Koşullar arasında kullanılması gereklidir | Level == 16 or CommandLine != "" |
Birden çok özel durumla filtrelemek için aşağıdaki yaklaşımlardan birini kullanabilirsiniz:
Burada gösterildiği gibi ve kullanın:
SecurityEvent
| where Level == 8 and EventID == 4672
Burada gösterildiği gibi, birden çok öğenin bulunduğu yere, bir kez daha yöneltin:
SecurityEvent
| where Level == 8
| where EventID == 4672
Not
Değerler farklı türlere sahip olabilir, bu nedenle doğru tür üzerinde karşılaştırmalar yapmak için bunları türe yazmanız gerekir. Örneğin SecurityEvent Düzeyi sütunu Dize türündedir, bu nedenle burada gösterildiği gibi üzerinde sayısal işleçleri kullanamadan önce bunu int veya long gibi sayısal bir türe attırmalısınız: SecurityEvent | where toint(Level) >= 10
Zaman aralığı belirtme
Zaman seçiciyi kullanma
Çalıştır düğmesinin yanında saat seçici görüntülenir ve yalnızca son 24 saatteki kayıtları sorgula işaret ediyor olduğunu gösterir. Bu, tüm sorgulara uygulanan varsayılan zaman aralığıdır. Yalnızca son saatteki kayıtları almak için Son saat'i seçin ve sorguyu yeniden çalıştırın.

Sorguya zaman filtresi ekleme
Ayrıca, sorguya bir zaman filtresi ekleyerek kendi zaman aralığınızı tanımlayabilirsiniz. Zaman filtresini tablo adının hemen sonraya koyabilirsiniz:
SecurityEvent
| where TimeGenerated > ago(30m)
| where toint(Level) >= 10
Önceki zaman filtresinde "30 dakika önce" anlamına gelir ve bu da bu sorgunun yalnızca son 30 dakikanın ago(30m) kayıtlarını döndüren (örneğin 30 dk gibi ifade) anlamına gelir. Diğer zaman birimleri gün (örneğin, 2d) ve saniye (örneğin, 10 saniye) içerir.
Sütunları seçmek ve hesaplamak için projeyi kullanma ve genişletme
Sonuçlara dahil etmek üzere belirli sütunları seçmek için projeyi kullanın:
SecurityEvent
| top 10 by TimeGenerated
| project TimeGenerated, Computer, Activity
Yukarıdaki örnek aşağıdaki çıkışı oluşturur:

Sütunları yeniden adlandırmak ve yenilerini tanımlamak için projeyi de kullanabilirsiniz. Sonraki örnek, aşağıdakini yapmak için projeyi kullanır:
- Yalnızca Bilgisayar ve TimeGenerated özgün sütunlarını seçin.
- Etkinlik sütununu EventDetails olarak görüntüler.
- EventCode adlı yeni bir sütun oluşturun. Substring() işlevi, Etkinlik alanından yalnızca ilk dört karakteri almak için kullanılır.
SecurityEvent
| top 10 by TimeGenerated
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)
Sonuç kümesinde tüm özgün sütunları tutmak ve ek sütunlar tanımlamak için extend kullanabilirsiniz. Aşağıdaki sorgu, EventCode sütununu eklemek için extend kullanır. Bu sütun tablo sonuçlarının sonunda görüntülenmeyebilirsiniz; bu durumda kaydı görüntülemek için kaydın ayrıntılarını genişletmenizi gerekir.
SecurityEvent
| top 10 by TimeGenerated
| extend EventCode=substring(Activity, 0, 4)
Satır gruplarını toplamak için özetleme kullanma
Summarize kullanarak bir veya daha fazla sütuna göre kayıt gruplarını tanımlayabilir ve toplamalar uygulayabilirsiniz. Özetlemenin en yaygın kullanımı count'tır ve her gruptaki sonuç sayısını döndürür.
Aşağıdaki sorgu son saatteki tüm Perf kayıtlarını gözden kullanır, ObjectName'e göre gruplar ve her gruptaki kayıtları sayar:
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName
Bazen grupları birden çok boyuta göre tanımlamak mantıklıdır. Bu değerlerin her benzersiz birleşimi ayrı bir grup tanımlar:
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName, CounterName
Bir diğer yaygın kullanım ise her grup üzerinde matematiksel veya istatistiksel hesaplamalar yapmaktır. Aşağıdaki örnek, her bilgisayar için ortalama CounterValue değerini hesaplar:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer
Ne yazık ki bu sorgunun sonuçları anlamsızdır çünkü çeşitli performans sayaçlarını birlikte karıştırmış oluruz. Sonuçları daha anlamlı hale almak için her CounterName ve Computer birleşimi için ortalamayı ayrı ayrı hesap edin:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer, CounterName
Zaman sütununa göre özetleme
Sonuçları gruplama bir zaman sütununa veya başka bir sürekli değere de dayalı olabilir. Ancak yalnızca özetlemek, benzersiz değerler olduğundan zaman aralığı içinde her milisaniye by TimeGenerated için gruplar oluşturabilir.
Sürekli değerleri temel alan gruplar oluşturmak için, en iyisi bin kullanarak aralığı yönetilebilir birimlere bozmaktır. Aşağıdaki sorgu, belirli bir bilgisayarda boş belleği (Kullanılabilir MBaytlar) ölçen Perf kayıtlarını analiz eder. Son 7 gün içinde her 1 saatlik dönemin ortalama değerini hesaplar:
Perf
| where TimeGenerated > ago(7d)
| where Computer == "ContosoAzADDS2"
| where CounterName == "Available MBytes"
| summarize avg(CounterValue) by bin(TimeGenerated, 1h)
Çıkışı daha net hale eklemek için zaman içinde kullanılabilir belleği gösteren bir zaman grafiği olarak görüntülemeyi seçin:

Sonraki adımlar
- Günlük sorgusunda dize verilerini kullanma hakkında daha fazla bilgi edinmek için bkz. Günlük sorgularında dizelerle Azure İzleyici çalışma.
- Günlük sorgusunda verileri toplama hakkında daha fazla bilgi edinmek için bkz. Günlük sorgularında Azure İzleyici toplamalar.
- Birden çok tablodan verileri birleştirme hakkında bilgi edinmek için bkz. Günlük sorgularında Azure İzleyici birleştirmeler.
- KQL dil başvurusunda Kusto sorgu dilinin tamamına ilişkin belgeleri alın.