1. Anasayfa
  2. Operation Manager (SCOM)

SCOM 2012 R2 – IIS Application Pool Performance with Powershell Grid Widget


0

Operations Manager üzerinde Dashboard oluşturmak istediğinizde elinizin altında birçok Widget bulunur. Bunlardan bir tanesi de Powershell Grid Widget. Bu Widget sayesinde Powershell’in gücünü kullanıp görmek istediğiniz Grid Dashboard’ları oluşturabilirsiniz.

Ben bu makalemde size IIS üzerindeki Application Pool’ların anlık olarak tükettikleri CPU ve Ram miktarlarını gösteren bir Dashboard’u Powershell kullanarak nasıl yapabileceğinizi aktaracağım. Bu sayede IIS’i izleyen operatörler kolaylıkla sunucular üzerindeki Application Pool’ları izleyebilecekler.

Konfigürasyona başlamadan önce SCOM üzerinde gerekli Dashboard şablonunu oluşturalım.

Bunu oluşturmak için aşağıdaki gibi Dashboard View seçeneğini seçelim.


Resim-1

Şekildeki gibi Grid Layouts seçeneğini seçerek devam edelim.


Resim-2

Dashboard’a bir isim verip ilerleyelim.


Resim-3

Dashboard üzerinde kaç hücre olacağını ve yapısının nasıl olacağını belirleyip ilerleyelim.


Resim-4

Dashboard’u oluşturduktan sonra oluşturduğumuz hücrelere ilgili Widget’ları ekleyerek devam edebiliriz. SCOM üzerinde bir sürü Widget bulunuyor. Biz “Powershell Grid Widget“ı seçerek devam edelim.


Resim-5

Widget’a isim vererek ilerleyelim. IIS Server’lar bu bölümde listeleneceği için isim olarak “IIS Servers” ismini verip devam edelim.


Resim-6

Bir sonraki bölümde script’imizi yazacağımız bölüm geliyor. Bu bölümde yazdığımız Powershell script’i biraz açıklayalım.

#IIS yüklü olan server’ların class’ını bir değişkene atayalım.

$class = Get-SCOMClass -Name Microsoft.Windows.InternetInformationServices.ServerRole

#Class’ı kullanıp IIS yüklü olan makinaları elde edelim

$computers = Get-SCOMClassInstance -Class $class

#Her objeye grid üzerinde bir ID atamak için bir sayı değişkeni oluşturalım.

$i=1

#Her bir computer objesini grid’e ID,HealthState,DisplayName kolonları ile ekleyelim. Bu kolonlara karşılık gelen değerleri de Objenin attribute’ları ile eşitleyelim.

foreach ($computer in $computers)

{

$dataObject = $ScriptContext.CreateFromObject($computer, “Id=Id,HealthState=HealthState,DisplayName=Path”, $null)

#Grid’deki her bir obje için custom bir kolon tanımlayalım. (Sıra numarası gibi)

$dataObject[“CustomColumn”]=$i

$ScriptContext.ReturnCollection.Add($dataObject)

$i++

}


Resim-7

Script’i kaydetmemizin ardından IIS Server’lar aşağıdaki gibi listelenecektir.


Resim-8

Şimdi ikinci hücrenin konfigürasyonuna geçelim. Burada yapacağımız işlem birinci hücreye bağlı olacak. Yani birinci hücrede seçilen IIS Server ikinci hücredeki değişkene atanacak ve o Server üzerindeki Application Pool’ların tükettikleri CPU ve RAM miktarlarını % olarak görebileceğiz. Yani birinci hücrede seçilen Server üzerindeki Application Pool bilgilerini ikinci hücrede göreceğiz.

İkinci hücre için de “Powershell Grid Widget“‘ını seçip devam edelim.


Resim-9

Seçtiğimiz Widget’a bir isim verip devam edelim.


Resim-10

Script bölümüne geldiğimizde aşağıdaki script’i script bölümüne ekleyelim. Script hakkındaki açıklamalar aşağıdaki gibidir.

#Diğer hücreden seçilen server bilgisini parametre olarak alalım.

Param($globalSelectedItems)

#Seçilen her öğe için aşağıdaki işlemleri uygulayalım.

foreach ($globalSelectedItem in $globalSelectedItems)

{

#IIS Server ismini bir değişkene atayalım.

$ServerName=$globalSelectedItem[“DisplayName”]

#Server üzerindeki “W3WP” process’lerini bir değişkene atayalım.

$proclist = Get-Process -ComputerName $ServerName -name “W3WP”

#Yine grid’deki satırlara bir sıra numarası atamak için sayı değişkeni oluşturalım.

$i=1

#Her w3wp process’i için aşağıdaki işlemleri yapalım.

foreach ($p in $proclist)

{

#Application pool ismini Add-Member parmetresini kullanarak yeni bir attribute olarak process değişkenine ekleyelim.

$p | Add-Member -type NoteProperty -name UserID -value ((Get-WmiObject -ComputerName $ServerName -class win32_process | where{$_.ProcessID -eq $p.id}).getowner()).user

#Aynı şekilde application pool’un kullandığı CPU değerini de yeni bir attibute olarak ekleyelim.

$p | Add-Member -type NoteProperty -name PercentCPU -value (get-wmiobject -ComputerName $ServerName -Class Win32_PerfFormattedData_PerfProc_Process | where{$_.IDProcess -eq $p.id}).PercentProcessorTime

#Grid kolonlarını ve kolonlara karşılık gelen data değerlerini belirleyelim.

$dataObject = $ScriptContext.CreateInstance(“xsd://foo!bar/baz”)

$dataObject[“Id”] = $i.ToString()

$dataObject[“PoolName”] = $p.UserID

$dataObject[“PID”] = $p.Id.ToString()

$dataObject[“CPU”] = “%”+” “+$p.PercentCPU.ToString()

$dataObject[“Memory (MB)”] = “{0:N0}” -f ($p.WS/1MB)+” “+”MB”

$dataObject[“NPM”] = “{0:N0}” -f ($p.NPM/1KB)+” “+”KB”

$dataObject[“Private Bytes (MB)”] = “{0:N0}” -f ($p.PM / 1MB)+” “+”MB”

$dataObject[“Virtual Memory Size”] = “{0:N0}” -f ($p.VM / 1MB)+” “+”MB”

$ScriptContext.ReturnCollection.Add($dataObject)

$i++

}

}

Script’i ilgili yere kopyalayarak devam edelim. Widget sihirbazımızı tamamlayalım.


Resim-11

Konfigürasyonun ardından IIS Servers bölümünden seçtiğiniz her IIS Server için Application Pool’lar ve tükettikleri CPU / RAM değerleri aşağıdaki gibi listelenecektir.


Resim-12

Powershell ile herşey mümkün. J

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

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

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.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir