Ekinlikler
17 Mar 23 - 21 Mar 23
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
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.
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.
Ö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.
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.
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:
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:
SecurityEvent
başlar.take
işleçtir. eklemeden | take 10
bile sorguyu çalıştırabiliriz. Komut yine geçerli olacaktır, ancak 30.000'e kadar sonuç döndürebilir.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:
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.
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:
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.
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 top
kullanınsort
.
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.
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 top
kullanmaktır.
desc
Kayıtları azalan düzende sıralamak için bağımsız değişkenini kullanın. Azalan, ve top
iç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
Artan düzende sıralamak için belirtin asc
.
Örneğin, aşağıdaki sorgu en son 10 kaydı döndürür:
SecurityEvent
| top 10 by TimeGenerated
Çıkış aşağıdaki örneğe benzer:
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 _8
dö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:
and
Burada 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
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 long
gibi int
sayısal bir türe dönüştürmeniz gerekir:SecurityEvent | where toint(Level) >= 10
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ç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.
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:
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.
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:
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
:
TimeGenerated
özgün sütunlarını Computer
seçin.Activity
Sütunu olarak EventDetails
görüntüleyin.EventCode
yeni 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)
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.
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 ObjectName
gruplandı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 Computer
birleşimlerinin ortalamasını CounterName
ayrı ayrı hesaplayın:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer, CounterName
Gruplandırma sonuçları bir saat sütununa veya başka bir sürekli değere de dayanabilir. Ancak özetlemek by TimeGenerated
gerekirse, 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 bin
aralığı 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 == "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:
Bu bölüm, sık sorulan soruların yanıtlarını sağlar.
Bazen Azure İzleyici Günlüklerinde yinelenen kayıtlar fark edebilirsiniz. Bu yineleme genellikle aşağıdaki iki koşuldan birinden kaynaklanır:
Ekinlikler
17 Mar 23 - 21 Mar 23
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunEğitim
Modül
Rehberli Proje - Azure Monitor'da KQL ile günlükleri analiz etme - Training
İşletmeniz, BT operasyonlarınız ve performansınızla ilgili içgörüler elde etmek için günlük sorguları yazın. Azure İzleyici Log Analytics'teki günlük verilerini çıkarmak için Kusto Sorgu Dili'ni (KQL) kullanın.
Belgeler
Azure İzleyici'de günlük sorguları - Azure Monitor
Azure İzleyici tarafından kullanılan Kusto Sorgu Dili için bu başvuru bilgileri, Azure İzleyici'ye özgü öğeleri ve Azure İzleyici günlük sorgularında desteklenmeyen öğeleri içerir.
Azure İzleyici Log Analytics'te sorguları kullanma - Azure Monitor
Kullanabileceğiniz farklı sorgu türleri ve örnek sorgular dahil olmak üzere Azure İzleyici Log Analytics'teki günlük sorgularına genel bakış.
Log Analytics öğreticisi - Azure Monitor
Azure İzleyici'de Log Analytics'i kullanarak bir günlük sorgusu oluşturup çalıştırmayı ve sonuçlarını Azure portalında analiz etmeyi öğrenin.