1. Ana Sayfa
  2. Microsoft Azure
  3. Azure RM VM HTML Dashbord With PowerShell Enhanced HTML

Azure RM VM HTML Dashbord With PowerShell Enhanced HTML

Merhaba,

Daha önceki makalelerimde Powershell Enhanced HTML modülünden bahsetmiştim. Bu makalemde de bu modülü kullanarak Azure VM’lere ait bilgileri nasıl HTML formatına dönüştürebileceğinizden bahsedeceğim.

Aslına bakarsanız modül ile ilgili özelliklerden pek bahsetmeyeceğim. Daha önceki üç makalemi bu konu ile ilgili inceleyebilirsiniz. Bu makalede AzureRM powershell modülünü kulanarak VM’lere ait bilgileri nasıl elde edebileceğiniz üzerine yoğunlaşacağım.

Bildiğiniz gibi günümüzde raporlama ve dashboard’lar bilgileri bir arada görmemizi sağlayan, hatta çeşitli algoritmalar ile belli ölçümler yapmamızı sağlayan önemli araçların başında gelirler. Azure üzerinde bulunan VM’lerin özelliklerini tabiki Azure portal üzerinden görmeniz mümkün. Ancak bilgilere tek bir yerden ulaşma kısmı biraz sıkıntılı. Çünkü Azure resource manager mimarisinde kaynaklar birbirleri ile relation kurarak bir yapıyı meydana getirdikleri için, her kaynağın özelliklerini görüntülemek için ilgili kaynağa gitmek ve özelliklerine ulaşmak gerekir.

Bu sebeplerden ötürü bir VM’e ait önemli özellikleri bir script ile elde edip VM’e ait bir obje oluşturmak ve buna ilişkin de bir tablo ile sunmak istedim. Belki IIS üzerinden bu dosyayı da yayınlarsanız ve belli aralıklar ile scripti çalıştırarak güncellerseniz, static fakat VM’ler hakkında ayrıntılı bilgi almayı sağlayan bir dashboard’u basit şekilde oluşturmuş olursunuz.

Bu amaçla aşağıdaki scripti yazdım. Umarım işinize yarar. Scripti geliştirip ek özellikler de kolaylıkla ekleyebilirsiniz.

Script’i çalıştırıp çıktısı olan html uzantılı dosyayı bir browser’da açtığınızda aşağıdaki gibi basit bir html dashboard’u elde edebilirsiniz.

Resim – 1

Scriptin tamamına aşağıdaki gibidir. Komutlara ilişkin açıklamaları komutların bir önceki satırında bulabilirsiniz.

Login-AzureRmAccount

#Tüm VM’leri get edip değişkene ata (Burada isterseniz farklı filtreler de kullanabilirsiniz.

$VMs Get-AzureRmVM

If ($($VMs).count -gt 0){

#Her VM için gerekli bilgileri elde edip PS object oluştur.
ForEach ($vmi in $VMs)

{
#VM size bilgisini değişkene ata
$sizeinfo Get-AzureRmVMSize -Location $vmi.location where-object {$_.name -eq $($vmi.hardwareprofile.vmsize)

}
#VM durum bilgisini değişkene ata
$statusinfo Get-AzureRmVM -ResourceGroupName $vmi.ResourceGroupName -Name $vmi.Name -Status 

$vmst = ($statusinfo.Statuses[1].DisplayStatus).Split(” “)[1]


#VM’in NIC bilgisi üzerinden vnet ve subnet bilgisini değişkene ata.
$vmNIC Get-AzureRmNetworkInterface where {$_.Id -eq $vmi.NetworkProfile.NetworkInterfaces[0].Id}
$vnet $vmNIC.IpConfigurations[0].Subnet[0].Id.Split(‘/’)[8]
$subnet $vmNIC.IpConfigurations[0].Subnet[0].Id.Split(‘/’)[10]

#VM’e ait tüm preperty’leri içeren bir hash table oluştur
$props [ordered]@{ “Name” $vmi.name
                     “HardwareProfile” $vmi.hardwareprofile.vmsize
                     “Location” $vmi.location
                     “NumberofCores” $sizeinfo.NumberOfCores
                     “MemoryInMB” = ($sizeinfo.MemoryinMB/1024).ToString() ” GB”
                     “MaxDataDiskCount” $sizeinfo.MaxDataDiskCount
                     “OSDiskSizeInMB” = ($sizeinfo.OSDiskSizeInMB/1024).ToString() ” GB”
                     “ResourceDiskSizeInMB” = ($sizeinfo.ResourceDiskSizeInMB/1024).ToString() ” GB”
                     “Status” $vmst
                     “VNet” $vnet
                     “Subnet” $subnet

}


#Hash table’ı kullanarak her bir vm için ps object oluştur

$Results += @(New-Object pscustomobject -Property $props)

}

}

#Enhanced HTML parametreleri için hash table oluştur.

    $params = @{‘As’=‘Table’;

    ‘PreContent’=‘<h2> + FRT Azure Vms</h2>’;

    ‘EvenRowCssClass’=‘even’;

    ‘OddRowCssClass’=‘odd’;

    ‘MakeTableDynamic’=$true;

    ‘MakeHiddenSection’=$true;

    ‘TableCssClass’=‘grid’;

    ‘Properties’=‘Name’,‘HardwareProfile’,‘Location’,‘NumberofCores’,‘MemoryInMB’,‘MaxDataDiskCount’,‘OSDiskSizeInMB’,‘ResourceDiskSizeInMB’, @{n=‘Status’;e={$_.Status};css={if ($_.Status -eq “deallocated”) { ‘red’ } else {‘green’}}},‘Vnet’,‘Subnet’}

#Her bir VM için oluşturulan ps objelerini kullanarak html fragment oluştur
$azurevms $Results ConvertTo-EnhancedHTMLFragment @params

#HTML fragment’i kullanarak ve gerekli css’leri kullanarak HTMl uzantılı dosyayı oluştur.

ConvertTo-EnhancedHTML -HTMLFragments $azurevms -CssUri C:\CSS\styles2.css -PreContent “<H1>FRT Azure VM Report</H1>”
Out-File “FRTAzureVM.html”

 

Kullandığım CSS dosyası da aşağıdaki gibidir.

body {
color:#333333;
font-family:Calibri,Tahoma;
font-size: 10pt;
}
h1 {
text-align:center;
}
h2 {
border-top:1px solid #666666;
}
th {
font-weight:bold;
color:#eeeeee;
background-color:#333333;
cursor:pointer;
}
.odd { background-color:#ffffff; }
.even { background-color:#dddddd; }

.paginate_enabled_next, .paginate_enabled_previous {
cursor:pointer;
border:1px solid #222222;
background-color:#dddddd;
padding:2px;
margin:4px;
border-radius:2px;
}
.paginate_disabled_previous, .paginate_disabled_next {
color:#666666;
cursor:pointer;
background-color:#dddddd;
padding:2px;
margin:4px;
border-radius:2px;
}
.dataTables_info { margin-bottom:4px; }
.sectionheader { cursor:pointer; }
.sectionheader:hover { color:red; }
.grid { width:100% }
.red {
color:red;
font-weight:bold;
}
.green {
color:green;
font-weight:bold;
}

Bir sonraki makalede görüşmek üzere.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/overview

https://www.pluralsight.com/courses/reporting-powershell-enhanced-html

TAGs: powershell, , , , , Create Azure virtual machine via powershell, Powershell Azure VM Command, , Manage azure vm with powershell, , , Azure VM Dashboard, , , , , Azure VM Dashboard with Enhanced HTML

Fırat

Yorum Yap

Yazar Hakkında

Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.

Yorum Yap