İngilizce dilinde oku

Aracılığıyla paylaş


Azure İzleyici Günlüklerinde günlük sorgularını kullanmaya başlama

Bu makalede, Azure İzleyici Günlükleri'nde günlük sorguları yazmanın temelleri açıklanır ve bunun nasıl yapılacağını da içerir:

Uygun olduğunda, makale hem Kusto Sorgu Dili (KQL) hem de Log Analytics basit modunu kullanarak verileri sorgulama örnekleri sağlar.

Not

En az bir sanal makineden veri topluyorsanız, bu alıştırmayı kendi ortamınızda yapabilirsiniz. Diğer senaryolar için, bol miktarda örnek veri içeren tanıtım ortamımızı kullanın.

Öğretici video

Not

Bu videoda kullanıcı arabiriminin önceki bir sürümü gösterilmektedir, ancak bu makalenin tüm ekran görüntüleri günceldir ve geçerli kullanıcı arabirimini yansıtır.


Gerekli izinler

Örneğin Log Analytics Okuyucusu yerleşik rolü tarafından sağlandığı gibi sorguladığınız Log Analytics çalışma alanları için izinlere sahip Microsoft.OperationalInsights/workspaces/query/*/read olmanız gerekir.

Sorguyu yapılandırma

Sorgular bir tablo adı veya komutuyla search başlayabilir. Sorgu için net bir kapsam tanımladığından, tablo adıyla başlamak iyi bir fikirdir. Ayrıca sorgu performansını ve sonuçların ilgi düzeyini artırır.

Not

Azure İzleyici tarafından kullanılan KQL büyük/küçük harfe duyarlıdır. Dil anahtar sözcükleri genellikle küçük harfle yazılır. Sorguda tablo veya sütun adlarını kullandığınızda, şema bölmesinde gösterildiği gibi doğru büyük/küçük harf kullandığınızdan emin olun.

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, Azure portalındaki Log Analytics'teki şema bölmesinde gösterilir.

İlgilendiğiniz bir tabloyu belirleyin ve ardından biraz veriye göz atın:

Kusto
SecurityEvent
| take 10

Yukarıdaki sorgu, tablodan SecurityEvent belirli bir sırada olmayan 10 sonuç döndürür. Tabloya göz atmanın bu yaygın yolu, yapısını ve içeriğini anlamanıza yardımcı olur. Şimdi nasıl oluşturulduğuna bakalım:

  • Sorgu, sorgunun kapsamını tanımlayan tablo adıyla SecurityEventbaşlar.
  • Kanal (|) karakteri komutları ayırır, bu nedenle ilk komutun çıkışı bir sonrakinin girişidir. İstediğiniz sayıda kanallı öğe ekleyebilirsiniz.
  • Boruyu takip eden take işleçtir. eklemeden | take 10bile sorguyu çalıştırabiliriz. Komut yine geçerli olacaktır, ancak 30.000'e kadar sonuç döndürebilir.

Arama sorguları

Arama sorguları daha az yapılandırılmıştır. Bunlar, belirli bir tablonun sütunlarından herhangi birinde belirli bir değer içeren kayıtları bulmak için en uygun olanıdır.

Bu sorgu tabloda "Şifreleme" tümceciği içeren kayıtları arar SecurityEvent . Bu kayıtlardan 10 kayıt döndürülür ve görüntülenir:

Kusto
search in (SecurityEvent) "Cryptographic"
| take 10

Bölümünü atlar in (SecurityEvent) ve yalnızca search "Cryptographic"çalıştırırsanız, arama tüm tabloların üzerinden geçer. İşlem daha uzun sürer ve daha az verimli olur.

Önemli

Arama sorguları normalde tablo tabanlı sorgulardan daha yavaştır çünkü daha fazla veri işlemeleri gerekir.

Sonuçları sınırla

take Belirtilen sayıda kayıt döndürerek küçük bir kayıt örneğini görüntülemek için işlecini kullanın. Örneğin:

Kusto
SecurityEvent
| take 10

Seçilen sonuçlar rastgeledir ve belirli bir sırada görüntülenmez. Sonuçları belirli bir sırada döndürmeniz gerekiyorsa ve top işleçlerini sort kullanın.

Sonuçları sıralama

Bu bölümde, ve işleçleri sort ile bunların desc ve asc bağımsız değişkenleri açıklanmaktadır.top Birkaç kayıt almak için yararlı olsa take da, sonuçları belirli bir sırada seçemez veya sıralayamazsınız. Sıralı bir görünüm elde etmek için ve topkullanınsort.

Sırala

Sorgu sonuçlarını belirttiğiniz sütuna göre sıralamak için işlecini kullanabilirsiniz.sort Ancak, sort sorgu tarafından döndürülen kayıt sayısını sınırlamaz.

Örneğin, aşağıdaki sorgu tablo için SecurityEvent en fazla 30.000 kayıt olan tüm kullanılabilir kayıtları döndürür ve bunları TimeGenerated sütununa göre sıralar.

Kusto
SecurityEvent	
| sort by TimeGenerated

Önceki sorgu çok fazla sonuç döndürebilir. Ayrıca sonuçların döndürülmesi de biraz zaman alabilir. Sorgu, tablonun tamamını SecurityEvent sütuna TimeGenerated göre sıralar. Ardından Analiz portalı, görüntüyü yalnızca 30.000 kayıtla sınırlar. Bu yaklaşım en uygun yöntem değildir. Yalnızca en son kayıtları almanın en iyi yolu işlecini topkullanmaktır.

Desc ve asc

desc Kayıtları azalan düzende sıralamak için bağımsız değişkenini kullanın. Azalan, ve topiçin sort varsayılan sıralama düzenidir, bu nedenle genellikle bağımsız değişkeni atlayabilirsinizdesc.

Örneğin, aşağıdaki sorguların her ikisi tarafından döndürülen veriler TimeGenerated sütununa göre azalan düzende sıralanır:

  • Kusto
    SecurityEvent	
    | sort by TimeGenerated desc
    
  • Kusto
    SecurityEvent	
    | sort by TimeGenerated
    

Artan düzende sıralamak için belirtin asc.

Üst

top sunucu tarafındaki tablonun tamamını sıralamak ve ardından yalnızca en üstteki kayıtları döndürmek için işlecini kullanın.

Örneğin, aşağıdaki sorgu en son 10 kaydı döndürür:

Kusto
SecurityEvent
| top 10 by TimeGenerated

Çıkış aşağıdaki örneğe benzer:

Azalan düzende sıralanmış ilk 10 kaydı gösteren ekran görüntüsü.

Sonuçları filtrele

Filtreleme, sorgu sonuçlarını ilgili bilgilerle sınırlamanın en yaygın yoludur.

Sorguya filtre eklemek için işlecini where ve ardından bir veya daha fazla koşul kullanın. Örneğin, aşağıdaki sorgu yalnızca SecurityEvent şu kayıtları Level equals _8döndürür:

Kusto
SecurityEvent
| where Level == 8

Filtre koşulları yazarken aşağıdaki ifadeleri kullanabilirsiniz:

Expression Açıklama Örnek
== Eşitliği denetleme
(büyük/küçük harfe duyarlı)
Level == 8
=~ Eşitliği denetleme
(büyük/küçük harfe duyarsız)
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 koşula göre filtreleme

Birden çok koşula göre filtrelemek için aşağıdaki yaklaşımlardan birini kullanabilirsiniz:

andBurada gösterildiği gibi kullanın:

Kusto
SecurityEvent
| where Level == 8 and EventID == 4672

Burada gösterildiği gibi ardışık olarak birden çok where öğeyi kanala geçirin:

Kusto
SecurityEvent
| where Level == 8 
| where EventID == 4672

Not

Değerlerin farklı türleri olabilir, bu nedenle doğru türde karşılaştırmalar yapmak için bunları atamanız gerekebilir. Örneğin, SecurityEvent Level sütun Dize türünde olduğundan, burada gösterildiği gibi üzerinde sayısal işleçler kullanabilmek için önce bunu veya longgibi int sayısal bir türe dönüştürmeniz gerekir:SecurityEvent | where toint(Level) >= 10


Zaman aralığı belirtme

Zaman seçiciyi veya zaman filtresini kullanarak bir zaman aralığı belirtebilirsiniz.

Not

Sorguya bir zaman aralığı eklerseniz, zaman seçici otomatik olarak Sorguda ayarla olarak değişir. Zaman seçiciyi el ile farklı bir değere değiştirirseniz, Log Analytics iki zaman aralığının küçük kısmını uygular.

Zaman seçiciyi kullanma

Zaman seçici Çalıştır düğmesinin yanında görüntülenir ve yalnızca son 24 saatin kayıtlarını sorguladığınızı gösterir. Bu varsayılan zaman aralığı tüm sorgulara uygulanır. Yalnızca son saatteki kayıtları almak için Son saat'i seçin ve sorguyu yeniden çalıştırın.

Zaman seçiciyi ve KQL modundaki zaman aralığı komutlarının listesini gösteren ekran görüntüsü.

Sorguya zaman filtresi ekleme

Sorguya bir zaman filtresi ekleyerek kendi zaman aralığınızı da tanımlayabilirsiniz.

Zaman filtresini tablo adının hemen arkasına yerleştirmek en iyisidir:

Kusto
SecurityEvent
| where TimeGenerated > ago(30m) 
| where toint(Level) >= 10

Önceki zaman filtresinde " ago(30m) 30 dakika önce" anlamına gelir. Bu sorgu yalnızca son 30 dakikadaki kayıtları döndürür; bu, örneğin 30m olarak ifade edilir. Diğer zaman birimleri arasında günler (örneğin, 2b) ve saniyeler (örneğin, 10'lar) yer alır.

Sorgu sonuçlarına sütun ekleme veya dışlama

Sonuçlara eklenecek belirli sütunları seçmek için kullanın project :

Kusto
SecurityEvent 
| top 10 by TimeGenerated 
| project TimeGenerated, Computer, Activity

Yukarıdaki örnek aşağıdaki çıkışı oluşturur:

Sorgu 'proje' sonuç listesini gösteren ekran görüntüsü.

Sütunları yeniden adlandırmak ve yenilerini tanımlamak için de kullanabilirsiniz project . Sonraki örnekte aşağıdakileri yapmak için kullanılır project :

  • Yalnızca ve TimeGenerated özgün sütunlarını Computer seçin.
  • Activity Sütunu olarak EventDetailsgörüntüleyin.
  • adlı EventCodeyeni bir sütun oluşturun. substring() işlevi, alandan yalnızca ilk dört karakteri Activity almak için kullanılır.
Kusto
SecurityEvent
| top 10 by TimeGenerated 
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)

Özel alanları tanımlama ve kullanma

Tüm özgün sütunları sonuç kümesinde tutmak ve diğer sütunları tanımlamak için kullanabilirsiniz extend . Aşağıdaki sorgu sütunu eklemek EventCode için kullanırextend. Bu sütun, tablo sonuçlarının sonunda görüntülenmeyebilir. Bir kaydı görüntülemek için ayrıntılarını genişletmeniz gerekir.

Kusto
SecurityEvent
| top 10 by TimeGenerated
| extend EventCode=substring(Activity, 0, 4)

Not

extend Sorgularda geçici hesaplamalar için işlecini kullanın. Daha verimli sorgular için veri alımı sırasında verileri dönüştürmek veya toplamak için alma zamanı dönüşümlerini veya özet kurallarını kullanın.

Sonuçları toplama ve gruplandırma

Satır gruplarını toplama

Kayıt gruplarını bir veya daha fazla sütuna göre tanımlamak ve bunlara toplamalar uygulamak için kullanın summarize . en yaygın kullanımı summarize , her gruptaki sonuç sayısını döndüren 'dir count.

Aşağıdaki sorgu, son saat içindeki tüm Perf kayıtları inceler, bunları ölçütüne göre ObjectNamegruplandırar ve her gruptaki kayıtları sayar:

Kusto
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName

Birden çok sütundaki benzersiz değer birleşimlerini gruplandırma

Bazen grupları birden çok boyuta göre tanımlamak mantıklıdır. Bu değerlerin her benzersiz bileşimi ayrı bir grup tanımlar:

Kusto
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName, CounterName

Matematiksel veya istatistiksel hesaplamalar yapma

Diğer bir yaygın kullanım, her grup üzerinde matematiksel veya istatistiksel hesaplamalar yapmaktır. Aşağıdaki örnek, her bilgisayarın ortalamasını CounterValue hesaplar:

Kusto
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer

Ne yazık ki farklı performans sayaçlarını birleştirdiğimiz için bu sorgunun sonuçları anlamsızdır. Sonuçları daha anlamlı hale getirmek için ve Computerbirleşimlerinin ortalamasını CounterName ayrı ayrı hesaplayın:

Kusto
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer, CounterName

Zaman sütununa göre özetleme

Gruplandırma sonuçları bir saat sütununa veya başka bir sürekli değere de dayanabilir. Ancak özetlemek by TimeGeneratedgerekirse, bu değerler benzersiz olduğundan zaman aralığındaki her milisaniye için gruplar oluşturabilir.

Sürekli değerlere dayalı gruplar oluşturmak için, kullanarak binaralığı yönetilebilir birimlere bölmek en iyisidir. Aşağıdaki sorgu, belirli bir bilgisayardaki boş belleği (Available MBytes) ölçen kayıtları analiz ederPerf. Son 7 gün içindeki her 1 saatlik dönemin ortalama değerini hesaplar:

Kusto
Perf 
| where TimeGenerated > ago(7d)
| where Computer == "DC01.na.contosohotels.com" 
| where CounterName == "Available MBytes" 
| summarize avg(CounterValue) by bin(TimeGenerated, 1h)

Çıkışı daha net hale getirmek için zaman içinde kullanılabilir belleği gösteren bir zaman grafiği olarak görüntülemeyi seçebilirsiniz. Bunu yapmak için Grafik görünümüne geçin, sağ taraftaki Grafik biçimlendirme kenar çubuğunu açın ve Grafik türü için Çizgi'yi seçin:

KQL modunda sorgu belleğinin zaman içindeki değerlerini gösteren ekran görüntüsü.

Sık sorulan sorular

Bu bölüm, sık sorulan soruların yanıtlarını sağlar.

Azure İzleyici Günlüklerinde neden yinelenen kayıtlar görüyorum?

Bazen Azure İzleyici Günlüklerinde yinelenen kayıtlar fark edebilirsiniz. Bu yineleme genellikle aşağıdaki iki koşuldan birinden kaynaklanır:

  • İşlem hattındaki bileşenler, hedefte güvenilir teslim sağlamak için yeniden denemelere sahiptir. Bazen bu özellik telemetri öğelerinin küçük bir yüzdesi için yinelemelere neden olabilir.
  • Yinelenen kayıtlar bir sanal makineden geliyorsa hem Log Analytics aracısını hem de Azure İzleyici Aracısı'nı yüklemiş olabilirsiniz. Log Analytics aracısının hala yüklü olması gerekiyorsa, Log Analytics çalışma alanını artık Azure İzleyici Aracısı tarafından kullanılan veri toplama kuralı tarafından toplanan verileri toplamamak için yapılandırın.

Sonraki adımlar