วิธีการเขียน Script ตรวจสอบ Server Performance สำหรับเครื่อง Windows 2008 R2

ขอนำเสนอ Powershell Script สำหรับใช้ Monitor Server Performance สำหรับเครื่อง Windows 2008 R2 ขึ้นไปดังนี้

การติดตั้ง PowerShell Editor และ วิธีใช้งานบน Windows 2008

1. ติดตั้งโดยไปที่

Server Manager -> Features -> Add Features

2. เลือกหัวข้อ

Windows PowerShell Integrated Script Environment (ISE)

3. ให้เลือกใช้งาน Version X86 ซึ่งเมื่อลงแล้ว Icon จะอยู่ที่

Accessories -> Windows PowerShell -> Windows PowerShell ISE (x86)

คำสั่งในการเปิด Execution Policy

Set-ExecutionPolicyUnrestricted -Force

การสร้าง Loop เพื่อให้สามารถรันได้ตลอดเวลา

While($true){
    .....[Monitor Script].....
}

คำสั่งตรวจหา IP ของ Server

Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.Description -eq "Intel(R) Dual Band Wireless-N 7260" } | ForEach-Object { $ipaddr = $_.IPAddress }
$ip = $ipaddr[0]

คำสั่งตรวจสอบ Max CPU Clock Speed

Get-WmiObject-class win32_processor -Property  "maxclockspeed" | ForEach-Object {$clockspeed = $_.maxclockspeed }

Get-WmiObject-class win32_computersystem -Property "NumberOfLogicalProcessors" | 

ForEach-Object { $lprocessor = $_.NumberOfLogicalProcessors }

$sumclockspeed = $clockspeed*$lprocessor

คำสั่งตรวจสอบ Current CPU

(Get-Counter "\Processor(_Total)\% Processor Time").CounterSamples | ForEach-Object {$cpuuse = $_.CookedValue}

    $cpuuse = [math]::round($cpuuse,0)

    $clockspeed = ($cpuuse*$sumclockspeed)/100

    $clockspeed = [math]::round($clockspeed,0)

    $pcpuuse = $clockspeed/$sumclockspeed

    $pcpuuse = [math]::round($pcpuuse,0)

คำสั่งตรวจสอบ Maximum Memory


$sumram = 0

Get-WMIObject-class win32_physicalmemory -Property "Capacity"  | ForEach-Object { $sumram = $sumram + $_.Capacity}

$sumram = $sumram/(1024*1024)

คำสั่งตรวจสอบ Current Memory

(Get-Counter "\Memory\Available MBytes").CounterSamples | ForEach-Object {$memfree = $_.CookedValue}

    $memuse = $sumram-$memfree;

    $pmemuse = ($memuse/$sumram)*100

    $pmemuse = [math]::round($pmemuse,0)

คำสั่งตรวจสอบ Connection

 $netstat = "netstat -na"

 $netstatvalue = invoke-expression -command "$netstat" | where 

 {$_ -match "ESTABLISHED"}

 $port80 = [string]::join(":",($ip,"80"))

 $port443 = [string]::join(":",($ip,"443"))

#Connection

$conn = (invoke-expression -command "$netstat" | where {$_ -match "ESTABLISHED"} | Measure-Object -Line).Lines 

#Unique IP

 if($netstatvalue){

     $uniqip = ($netstatvalue | where {$_ -match $port80 -or 

$_ -match $port443 } | %{ $_.Split(' ',[StringSplitOptions]'RemoveEmptyEntries')[2] } | %{ $_.Split(':')[0] } | Sort-Object -Unique | Measure-Object -Line).Lines

 }else{

      $uniqip = 0

 }

ตัวอย่างวิธีการ Display Stat บน Powershell Console

cls

 Write-Host “              Token  : "$token

 Write-Host "              Server IP  : "$ip

 Write-Host "              TimeStamp  : "$timestamp    

อาจจะยังไม่ได้อธิบายวิธีการทำ Service Process หรือในส่วนของการตั้ง Task Manager เพื่อทำระบบ Check อัตโนมัติ ไว้ว่าง ๆ เดี๋ยวค่อยมาเขียนต่อให้ครับ

Comments are closed.