Microsoft Azure Monitoring Log Analytics (Log Search) Part III
Önceki makale serilerimizde verileri toplamaya başlamıştık. Toplamış olduğumuz bu veri setlerinden uyarılar oluşturduk ve takip etmeye başladık. Daha önce de söylediğim gibi Log Analytics aslında bir veri ambarıdır. Çalışma alanı oluşturarak aslında bir veri ambarı oluşturduk ve verilerimizi bu veri ambarına göndermeye başlamış olduk. Log Analytics ise göndermiş olduğumuz bu verileri kendi içerisinde normalleştirerek , structure bir veri yapısı ile bizlere sunmaktadır. Bizler bu makale serimizde gelen bu anlamlı ve normalleştirilmiş veriler üzerinde sorgulamalarımı KQL kullanarak gerçekleştireceğiz.
Bununla birlikte Azure üzerinde Log Analytics çalışma alanına doğrudan bağlanabilen hazır çözümlerde bulunmaktadır. Bu paket çözümlerden de faydalanılabilir. Bununla birlikte bilinmesi gereken bir başka konuda bir kaynak ya da kaynak grubu sadece bir çalışma alanına bağlanabilmektedir.
Hazır olarak Azure tarafından sağlanan çözümler için arama ekranında Solutions altında ilgilendiğimiz alanlarla ilgili ekranları bulabiliriz.
Solutions penceresine geldiğimizde Add seçimini yaparak bizlere uygun olan ya da eklemek istediğimiz çözümleri ekleyebiliriz.
Görüldüğü üzere hazır olarak sunulan bir çok çözüm mevcuttur. Bu çözümlerin bir kısmı ücretli bir kısmı da ücretsiz olarak sunulmaktadır. Bununla birlikte farklı üreticilerinde sunduğu çözümler mevcuttur. Ekran görüntüsünde göreceğiniz üzere bu filtreleme seçeneklerine göre ihtiyacımız olan hazır çözümleri kullanabilecek durumdayız.
Bu makalemizde bizler hazır olan çözümler yerine kendimizin sorguları oluşturacağız ve sonuçlarını istediğimiz şekilde alabileceğimiz sorgularımızı oluşturacağız. Şimdi Azure üzerinde Log Analytics çalışma grubuna geçelim.
Çalışmaya başladığımızda oluşturmuş olduğumuz CPMonitorWS isimli çalışma alanımıza geçiyoruz. sol tarafta bulunan panel üzerinde Logs seçimini yaparak sorgulama ekranımıza ulaşacağız.
Evet Log Analytics bir veri ambarıdır ve topladığı verileri normalleştirir ve structure bir hale getirerek sorgulamalarımıza da olanak sağlar diye bahsetmiştik. İşte sol tarafta görülen alan bizlerin topladığı ve ilişkisel hale getirilmiş tabloları görmekteyiz. Bizler bu tablolar üzerinde artık ihtiyacımız olan ya da olacak sorguları oluşturacağız ve oluşturmuş olduğumuz sorgular üzerlerinde yine uyarılar oluşturabileceğiz.
Görüldüğü gibi Perf isimli bir tablomuz mevcut. Performans metriklerini topladığımız ve performans metrikleri ile ilgili sorgulamaları gerçekleştireceğimiz tablomuz olacak. Bununla birlikte Log Analytics tab extension desteği mevcuttur. Ekran görüntüsünde de göreceğiniz üzere sorguyu oluşturmaya başladığımızda tabloları kendisi bizlere getirmekte.
Evet sorgulamımızı doğrudan Perf tablosu içerisinde çağırdık. Herhangi bir koşul belirtmeden 24 Saat içerisinde ne kadar data toplamış isek hepsini listeledik. Performans metrikleri ile ilgili olarak istemiş olduğunu fakat tablo içerisinde göremediğimiz bir veri var ise bu verileri bizler ilk konfigürasyonu yaparken seçimini yapmamışız demektir. Eklemek istediğimiz bir performans metriği var ise öncelikle olarak ilk makalemizde belirttiğimiz alan üzerinde eklememiz gerekmektedir.
Perf
| where ObjectName == “Processor”
Bizler sorgulamamızı biraz daraltarak sadece İşlemci değerlerini almak istiyorum. Bunun için yapılacak tek şey Where koşulu ile ObjectName alanınında Processor değerini girerek sadece işlemciye ait olan değerleri toplayabilmekteyiz.
Perf
| where ObjectName == “Processor”
| summarize arg_max(CounterValue, *) by bin(TimeGenerated, 10m), Computer
Bu sorgumuzda ise counter değeri için arg_max fonksiyonunu kullanarak o zaman aralığında ulaştığı maksimum değeri alacağız. Burada farklı olarak yaptığımız işlemde ise “TimeGenerated, 10m” değeri ile son 24 saat içerisindeki bütün veriyi getirdik ,fakat 10 dakikalık periyotlar şeklinde bölünerek getirmek istediğimiz için kullandık. Bunun sebebi dataya bizler bütün olarak değil performansın zaman çizelgesindeki durumunu anlayabilmek ve görselleştirebilmek için ihtiyaç duyacağımızdan dolayı kullandığımız bir değişkendir.
Perf
| where TimeGenerated >=ago(1h)
| where ObjectName == “Processor”
| summarize arg_max(CounterValue, *) by bin(TimeGenerated, 10m), Computer
Bu sorgumuzda ise bir öncekinden farklı olarak zaman aralığını sorgu içerisinde kullandık. Yani sorgulamalarımızı son bir saat için ve 10 dakikalık zaman dilimine bölerek işlemcinin maksimum değerlerine kadar inebildik.
Perf
| where TimeGenerated > ago(12h)
| where Computer startswith “App”
| where CounterName == “% Processor Time”
| summarize avg(CounterValue) by Computer, bin(TimeGenerated, 10m)
| render timechart
Bu sorgumuzda ise bir grafik çıktısı elde ederek, daha anlamlı ve sonuçları daha iyi görebileceğimiz bir çıktı haline getirdik. Yine son 12 saat içerisinde ve 10 dakikalar bölümler içerisinde ortalama değerleri bulduk. Bununla birlikte aynı grafik içerisine var olan bütün sunucuları alabilirdik. Ben bu sorgu içerisinde örnek olması açısında yine bir Where koşulu ile birlikte “App” ile başlayan sunucunun verisini aldım ve bunu bir timechart içerisinde görselleştirdim.
Perf
| where TimeGenerated > ago(1h)
| where CounterName == “% Processor Time” and InstanceName == “_Total”
| summarize arg_max(TimeGenerated, *) by Computer| top 5 by CounterValue
Yine bir monitoring işi yapıyorsak ihtiyaç duyacağımız bir başka sorgumuzda muhtemelen TOP N gibi değerlerin alımı çıkarmak olacaktır. İşlemci tarafında son bir saat içerisinde işlemci kullanım yoğunluğunu TOP 5 olacak ve sıralaması yüksekten en düşüğe olacak şekilde oluşturulmuş sorgu ve çıktısını görebilirsiniz.
Perf
| where ObjectName == “LogicalDisk” and CounterName == “% Free Space”
| summarize FreeSpace = min(CounterValue) by Computer, InstanceName
| where InstanceName contains “:”
| where FreeSpace < 100
| sort by FreeSpace asc
Son örnek olarak yine farklı olması açısından Disk üzerinde boş alan olarak belirli bir yüzdenin altında kalan kaynakları listeledik. Burada ben test ortamı üzerinde sorguları çalıştırdığım eşik değerini sorgu içerisinde yüksek verdim. Üretim ortamlarında sizler kendi eşik değerlerinizi ona göre verebilir ve bu değerler için uyarılar oluşturabilirsiniz.
Bir sonraki makale serimizde artık bu verileri zenginleştirmek ve görselleştirme adımını gerçekleştireceğiz.
Eline sağlık Yenal