Azure İzleyici’de günlük sorgularını kullanmaya başlama

Dekont

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.

Kusto Sorgu Dili 'de (KQL) sorgulamayı zaten biliyorsanız ancak kaynak türlerine göre hızlı bir şekilde yararlı sorgular oluşturmanız gerekiyorsa Azure İzleyici Log Analytics'te sorguları kullanma sayfasındaki kaydedilen örnek sorgular bölmesine bakın.

Bu öğreticide Azure İzleyici'de günlük sorguları yazmayı öğreneceksiniz. Makalede şunların nasıl yapıldığını görebilirsiniz:

  • Sorgu yapısını anlama.
  • Sorgu sonuçlarını sıralayın.
  • Sorgu sonuçlarını filtreleyin.
  • Bir zaman aralığı belirtin.
  • Sonuçlara eklenecek alanları seçin.
  • Özel alanları tanımlama ve kullanma.
  • Sonuçları toplama ve gruplandırma.

Azure portalında Log Analytics'i kullanma öğreticisi için bkz . Azure İzleyici Log Analytics'i kullanmaya başlama.

Azure İzleyici'deki günlük sorguları hakkında daha fazla bilgi için bkz . Azure İzleyici'de günlük sorgularını genel bakış.

Bu öğreticinin video sürümü aşağıdadı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.

Yeni sorgu yazma

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.

Dekont

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, Analytics portalındaki Log Analytics'teki şema bölmesinde gösterilir. İlgilendiğiniz bir tabloyu belirleyin ve ardından biraz veriye göz atın:

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.

Take

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. 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çlerinisort kullanın.

Arama sorguları

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

search in (SecurityEvent) "Cryptographic"
| take 10

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. 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.

Sıralama ve üst

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.

Desc ve asc

Desc

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:

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

Asc

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

Sırala

işlecini sortkullanabilirsiniz. sort sorgu sonuçlarını belirttiğiniz sütuna göre sıralar. 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.

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.

Ü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:

SecurityEvent
| top 10 by TimeGenerated

Çıktı bu örneğe benzer.

Screenshot that shows the top 10 records sorted in descending order.

Where işleci: Bir koşula göre filtreleme

Adlarıyla gösterildiği gibi filtreler, verileri belirli bir koşula göre filtreler. 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:

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 filtrelemek için aşağıdaki yaklaşımlardan birini kullanabilirsiniz:

andBurada gösterildiği gibi kullanın:

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

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

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

Dekont

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.

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.

Screenshot that shows the time picker and its list of time-range commands.

Sorguya zaman filtresi ekleme

Sorguya bir zaman filtresi ekleyerek kendi zaman aralığınızı da tanımlayabilirsiniz. Zaman filtresi eklemek, zaman seçicide seçilen zaman aralığını geçersiz kılar.

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

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.

Proje kullanma ve sütunları seçmek ve hesaplamak için genişletme

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

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

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

Screenshot that shows the query 'project' results list.

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.
SecurityEvent
| top 10 by TimeGenerated 
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)

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.

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

Satır gruplarını toplamak için özetle özelliğini kullanma

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:

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 bileşimi ayrı bir grup tanımlar:

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

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:

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:

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:

Perf 
| where TimeGenerated > ago(7d)
| where Computer == "ContosoAzADDS2" 
| 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.

Screenshot that shows the values of a query memory over time.

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