Azure monitoring üzerinde oluşturmuş olduğumuz ve verileri topladığımız çalışma alanındaki veriler üzerinden sorgular hazırladık ve çalıştırmıştık. Şimdi ise bu sorguları biraz daha çeşitlendirerek PowerBI üzerinde kullanabilmek adına veri kümeleri haline getireceğiz. Bu sorgularımız ile oluşturduğumuz PowerBI veri kümelerini raporlama ve görselleştirme işlemlerini yağacağız. PowerBI ile veri kümelerinin ayrıntılarını aşağıdaki diagram üzerinde görebilirsiniz.
PowerBI Desktop yayınlayabileceğimiz veri setlerimizi ve bu veri setlerimizden raporlar oluşturmamıza olanak sağlayan bir masaüstü uygulamasıdır. Azure Monitoring üzerinden dışarı alabileceğimiz ve Power Query kullanarak sorgularda oluşturmamıza olanak sağlayan bir araçtır.
Şimdi Azure üzerinde Log Analytics üzerinde sorgularımızı oluşturacağız ve bu oluşturduğumuz sorguları dışarı aktararak, PowerBI üzerinde veri setleri haline getireceğiz.
Peki bizler nelerin raporlamasını ve görselleştirmesini istiyoruz ?
- CPU Kullanımları
- Memory Kullanımları
- Network Kullanımları
- Disk I/O Kullanımları
- Disk Free Space
Evet yukarıda belirttiğim değerleri artık PowerBI Desktop üzerinde hem raporluyor hem de görselleştiriyor olacağız. Bunun için öncelikle yine yukarıda sıralı halde verdiğim her bir metrik için sorgularımızı oluşturarak çalışmaya başlayacağız. Ben bu sorguları aşağıda paylaşıyorum. Bu sorguların her birinin sonunda bir grafik ekledim. Bunun sebebi verileri alırken gerçekten anlamlı bir şekilde verileri okuyup okuyamadığımı anlamak için ekledim. PowerBI üzerine aktardığımızda bu değişkenin hiç bir hükmü olmayacak. O sebeple render fonksiyonunu kaldırmadım.
CPU Kullanımı ;
let Computers = Perf
| where ObjectName == ‘Processor’ and CounterName == ‘% Processor Time’ and InstanceName == ‘_Total’
| summarize AggregatedValue = avg(CounterValue) by Computer
| sort by AggregatedValue desc
| project Computer;
Perf
| where ObjectName == ‘Processor’ and CounterName == ‘% Processor Time’ and InstanceName == ‘_Total’ and Computer in (Computers)
| summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 15m) | render timechart
Memory Kullanımı ;
let Computers = Perf
| where ObjectName == ‘Memory’ and CounterName == ‘% Committed Bytes In Use’
| summarize AggregatedValue = avg(CounterValue) by Computer
| sort by AggregatedValue desc
| project Computer;
Perf
| where ObjectName == ‘Memory’ and CounterName == ‘% Committed Bytes In Use’ and Computer in (Computers)
| summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 15m) | render timechart
Network Kullanım (Sent/Receive)
let Computers = Perf
| where ObjectName == “Network Adapter” and CounterName == “Bytes Sent/sec” or CounterName == “Bytes Received/sec”
| where CounterValue != 0
| summarize AggregatedValue = avg(CounterValue) by Computer
| sort by AggregatedValue desc
| project Computer;
Perf
| where ObjectName == “Network Adapter” and CounterName == “Bytes Sent/sec” or CounterName == “Bytes Received/sec”
| where CounterValue != 0 and Computer in (Computers)
| summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 15m) | render timechart
Disk Read/Write
let Computers = Perf
| where ObjectName == “LogicalDisk” and InstanceName contains “C”
| where CounterName == “Avg. Disk sec/Write”
| summarize AggregatedValue = avg(CounterValue) by Computer
| sort by AggregatedValue desc
| project Computer;
Perf
| where ObjectName == “LogicalDisk” and InstanceName contains “C”
| where CounterName == “Avg. Disk sec/Write”
| summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 15m) | render timechart
Disk Free Space
Perf
| where ObjectName == “LogicalDisk” and CounterName == “Free Megabytes” and InstanceName != “_Total” and InstanceName contains “:”
| summarize Disk_Free_MB = min(CounterValue) by Computer, InstanceName
Hazırlamış olduğumuz sorguları Azure üzerinde yine daha önce hazırlamış olduğumuz CPMonitorWS isimli çalışma alanımızda çalıştıracağız.
Evet ilk CPU için oluşturduğumuz sorgumuzu çalıştırdık. Çıktı olarak timechart olarak bu veriyi okuduğumu belirtmiştim. Verileri anlamlı bir şekilde alabiliyoruz. Şimdi bu sorgumuzu ekran görüntüsünde de göreceğiniz üzere Export seçimini yapıyoruz. Ardından Export to Power BI (M Query) olarak dışarı alıyoruz.
Dışarı aldığımızda çıktıyı bizlere bir txt dosyası olarak verecek. Bu txt dosyasının içeriğini kopyalıyoruz.
PowerBI desktop edition sürümünü açıyoruz ve görselleştirme çalışmalarına başlıyoruz.
Power BI Desktop üzerinden Home menüsü altında bulunan Get Data seçimini, ardından Blank Query seçimini yapıyoruz.
Açılan ekranımızda yine Home başlığı altında bulunan Advanced Editor’i açıyoruz.
Query alanına daha önce log analytics çalışma alanı üzerinden export ettiğimiz PowerBI txt dosyasının içeriğini olduğu gibi yapıştararak Done seçimini yapıyorum.
Sorgumuzun veri seti halinde Power BI üzerine geldiğini görüyoruz. Dikkat ederseniz daha önce belirttiğim timechart fonksiyonunu kaldırmadığımı çünkü bir öneminin olmadığından bahsetmiştim. Görüldüğü gibi tablo olarak bütün verileri yine sorgumuz içerisinde belirttiğimiz 15 dakikalık zaman periyodu içerisinde geldiğini görüyoruz.
Diğer vermiş olduğum bütün sorguları yine bir önceki adımda yaptığımız şekilde önce Log Analytics üzerinden dışarı alacağız ve Power BI üzerine import edeceğiz.
Daha önceki sorgularımızın hepsini Power BI üzerine veri seti olarak eklediğimizde sağda bulunan field alanında veri setleri halinde hepsini görebiliyor durumdayız. Şimdi bu veri setlerini görselleştirelim.
Visualization altında bulunan Line Chart grafiğini ekliyoruz.
İlk öncelikle CPU için bir Line Chart grafiğini ekledik. Bu Line Chart için Axis değeri için Time Generated , Legend alanı için Computer , Values alanı için de sorgumuz içerisinde belirtilen Counter Values değerlerini atadık. İlk olarak eklediğimiz Axis alanında verinin zaman çizgisinde olmadığını göreceksiniz. Bunun için ekran görüntüsünde de göreceğiniz üzere TimeGenerated olarak tanımlamanız gerekmekte. İlk eklediğimizde varsayılan olarak Data Hierarchy olarak gelmekte.
Şimdi bütün veriler için zaman çizelgesini aynı adımlardan oluşacak şekilde tanımlayacağız.
Evet ilgili alanları oluşturmuş olduğumuz veri setlerinin tamamını ekleyerek verilerimizi hem raporlayabilmek hem de görselleştirebilmiş olduk. Bununla birlikte sorguları dilediğimiz gibi genişletebilir hatta bir bütün veri seti halinde Power BI üzerinde oluşturabiliriz. Oluşturmuş olduğumuz bütün veri seti içerisinde time alanı her biri için ortak olacağı için bir problem anında belirtilen zaman aralığında ki bütün verileri aynı anda gözlemleyebiliriz.