Tag: server performance

  • วิธีการเขียน 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 อัตโนมัติ ไว้ว่าง ๆ เดี๋ยวค่อยมาเขียนต่อให้ครับ

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

    ขอนำเสนอ PHP Script และ Terminal linux program สำหรับใช้ Monitor Server Performance สำหรับ Ubuntu Linux ดังนี้

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

    hostname -A

    วิธีตรวจสอบ Traffic จาก ifconfig ด้วย PHP5 Script

    <?php
    //Net Traffic
    exec("ifconfig | grep 'RX bytes'",$net);
    $neteth0 = explode(":",$net[0]);
    $netin1 = explode(" ",$neteth0[1]);
    $netin = $netin1[0];
    $netout1 = explode(" ",$neteth0[2]);
    $netout = $netout1[0];
    unset($net);
    unset($neteth0);
    unset($netin1);
    unset($netout1);
    exec("cat net.db",$nethistory);
    $hnet = explode(":",$nethistory[0]);
    $diff = time()-$hnet[0];
    $cnetin = round(($netin-$hnet[1])/$diff,0);
    $cnetout = round(($netout-$hnet[2])/$diff,0);
    unset($nethistory);
    exec("echo ".time().":".$netin.":".$netout." > net.db");
    echo date("d-m-Y H:i:s",time())." Traffic In : ".$cnetin.", Traffic Out : ".$cnetout;
    ?>

    วิธีการตรวจสอบ CPU จาก /proc/cpuinfo ด้วย PHP5 Script

    <?php
    //CPU
    exec("cat /proc/cpuinfo | grep MHz | head -1",$clockrate);
    exec("cat /proc/cpuinfo | grep MHz | wc -l",$cpucount);
    $clockrate1 = explode(":",$clockrate[0]);
    $maxcpu = trim($clockrate1[1])*$cpucount[0];
    unset($clockrate);
    unset($clockrate1);
    unset($cpucount);
    exec("vmstat 1 2 | tail -1 | awk '{ print $15 }'",$pcpufree);
    $pcpuuse = 100-$pcpufree[0];
    $cpuuse = round(($pcpuuse*$maxcpu)/100,0);
    unset($pcpufree);
    echo "MAX CPU Speed : ".$maxcpu." MHz\n";
    echo "CPU Use : ".$cpuuse." MHz (".$pcpuuse." %)\n";
    ?>

    วิธีการตรวจสอบ Memory จาก free -m ด้วย PHP5 Script

    <?php
    //MEM
    exec("free -m | grep Mem: | awk '{print $2\":\"$3}'",$ram);
    $ramraw = explode(":",$ram[0]);
    $ramtotal = $ramraw[0];
    $ramuse = $ramraw[1];
    $pramuse = round(($ramuse/$ramtotal)*100,0);
    unset($ram);
    unset($ramraw);
    echo "MAX RAM : ".$ramtotal." MB\n";
    echo "MEMORY Use : ".$ramuse." MB (".$pramuse." %)\n";
    ?>

    คำสั่งตรวจสอบ Connection (ยกตัวอย่างเฉพาะ port 80)

    netstat -na | grep 192.168.99.1:80 | wc -l

    คำสั่งตรวจสอบ Unique IP (ยกตัวอย่างเฉพาะ port 80)

    netstat -na | grep 192.168.99.1:80 | sed 's/::ffff://g' | awk '{print $5}' | cut -f 2 -d ' ' | cut -f 1 -d ':' | sort | uniq | wc -l

    จะเห็นได้ว่าเราสามารถเขียน script monitor ได้หลากหลายมุมมอง ได้ตามต้องการเลยครับ