วิธีการเขียน 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

Read More »

การสร้างระบบ Load Balance Web Server ด้วยวิธีการ URL Redirect

เราสามารถสร้างระบบ Load Balance Web Server ด้วยวิธีการ URL Redirect โดยสามารถสร้างด้วยภาษาใดก็ได้ แต่จะขอยกตัวอย่างด้วยภาษา PHP ได้ง่าย ๆ ดังนี้ ตัวอย่างไฟล์ server-status ที่ได้ทำการ monitor web server มาเรียบร้อยแล้ว webserver1.testlab UP webserver2.testlab DOWN – เราสามารถใช้คำสั่งดึงไฟล์เพื่อคัดเฉพาะ Web Server ที่สามารถใช้งานได้จริง ๆ ดังนี้ exec(“cat /tmp/server-status | grep UP”,$redirect); – จากนั้นจะทำการ นำรายการ server ทั้งหมดซึ่งอยู่ในตัวแปร $redirect มาทำการสุ่ม ดังนี้ $random = rand(0,(count($redirect)-1); – ก็จะทำเอาเลข server ที่ random ได้ไปเข้ากระบวนการ Redirect ดังนี้ $server = explode(” “,$redirect[$random]); header(‘HTTP/1.1 301 Moved Permanently’); header(‘Cache-Control: no-store, no-cache, must-revalidate’); header(‘Expires: Thu, 01 Jan 1970 00:00:00 GMT’); header(‘Location: https://’.$server[0].’/’); unset($server); ในกรณีที่ต้องการสร้างหน้ารอให้ทำการตรวจสอบว่าในกรณีที่ไม่มีเครื่องให้บริการให้แสดงข้อความ ตัวอย่างดังนี้ if(count($redirect)==0){ echo “Server Unavailable or Maintenance Period”; } ดังที่กล่าวมาทั้งหมดข้างต้นสามารถรวมเป็น script ไฟล์ PHP ได้ดังนี้ <?php exec(“cat /tmp/server-status | grep UP”,$redirect); if(count($redirect)==0){ echo “Server Unavailable or Maintenance Period”; }else{ $random = rand(0,(count($redirect)-1)); $server = explode(” “,$redirect[$random]); header(‘HTTP/1.1 301 Moved Permanently’); header(‘Cache-Control: no-store, no-cache, must-revalidate’); header(‘Expires: Thu, 01 Jan 1970 00:00:00 GMT’); header(‘Location: http://’.$server[0].’/’); unset($server); } unset($redirect); ?> *สามารถอ่านวิธีสร้างไฟล์สำหรับ monitor web serverได้จาก บทความนี้ http://sysadmin.psu.ac.th/2014/06/19/monitor-web-server-wget-shell-script-daemon/

Read More »

การตรวจสอบสถานะการให้บริการ Web Server ด้วย WGET และสร้าง Shell Script เพื่อตรวจสอบอัตโนมัติ

ขอนำเสนอวิธีการตรวจสอบสถานะการให้บริการด้วยคำสั่ง wget และการสร้าง Shell Script เพื่อให้ทำงานได้อย่างอัตโนมัติ การตรวจสอบสถานะการให้บริการด้วย WGET วิธีติดตั้ง wget สำหรับ ubuntu 14.04 สามารถติดตั้งโดยใช้คำสั่ง (โดยปกติจะลงมาให้อยู่แล้ว) # sudo apt-get install -y wget วิธีติดตั้ง wget สำหรับ windows สามารถ Download ได้ที่ http://downloads.sourceforge.net/project/gnuwin32/wget/1.11.4-1/wget-1.11.4-1-setup.exe สามารถเปิด command prompt รันได้ที่ path นี้ (ยกตัวอย่างจาก windows 64 bit) C:\Users\xxx>cd C:\Program Files (x86)\GnuWin32\bin C:\Program Files (x86)\GnuWin32\bin>wget SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc wget: missing URL Usage: wget [OPTION]… [URL]… Try `wget –help’ for more options. ตัวอย่างคำสั่งที่ใช้สำหรับโหลด html URL ที่ต้องการตรวจสอบ wget -nv –timeout 2 –connect-timeout=10 -t 1 http://webserver1.testlab -O /tmp/webserver1-tmp -nv : ใช้สำหรับปิดการแสดงผล แต่ยังแสดงผล error และข้อมูลเบื้องต้น –timeout [sec] : ใช้สำหรับกำหนดค่า timeout ในการเชื่อมต่อไปยัง web server –connect-timeout [sec] : ใช้กำหนดเวลาในกรณีที่การเชื่อมต่อไม่สิ้นสุดในเวลาที่กำหนด -t [sec] : จำนวนครั้งในการ retry connection -O : บันทึกผลลัพธ์ไปยังไฟล์ ในกรณีที่ต้องการโหลด html URL ประเภท https ให้ทำการข้ามการตรวจสอบ certificate ด้วยตัวอย่างคำสั่งดังนี้ wget -nv –timeout 2 –connect-timeout=10 -t 1 –no-check-certificate https://webserver1.testlab -O /tmp/webserver1-https-tmp หลังจากได้ไฟล์ผลลัพธ์ของหน้า html website เป้าหมายแล้ว สามารถใช้โปรแกรม grep เพื่อตรวจสอบว่าปรากฎข้อความที่แสดงว่าหน้า web ทำงานปกติหรือไม่ เช่น grep WEBSERVER /tmp/webserver1-tmp หลังจากนั้นเราสามารถประยุกต์เพื่อเขียน Shell Script ง่าย ๆ ที่สามารถตรวจสอบ Web Server เพื่อดูว่า Web ปกติหรือไม่ในขั้นตอนถัดไป วิธีการเขียน Shell Script เพื่อตรวจสอบการใช้งานแบบอัตโนมัติ Shell Script สำหรับตรวจสอบ Web Server – ทำการสร้างไฟล์ /home/[user]/checkweb.sh nano /home/testlab/checkweb.sh – สร้าง script ข้อความดังนี้ *ตัวอย่างรูปแบบ sh shell #!/bin/sh url1=’webserver1.testlab’ url2=’webserver2.testlab’ searchtxt=’WEBSERVER’ #URL PATH path=’/’ while(true); do cp /dev/null /tmp/server-status for i in $(seq 1 2) do eval wget -q –timeout 2 –connect-timeout=10 -t 1 http://\${url${i}}$path

Read More »

ความเข้าใจในการสร้าง virtualhost ของ apache2 web server บน ubuntu 14.04 server ฉบับ workshop

ถ่ายทอดความเข้าใจในการสร้าง virtualhost ของ apache2 web server บน ubuntu 14.04 server ฉบับ workshop พร้อมตัวอย่างติดตั้ง phpmyadmin และ joomla site เป็น virtualhost -:เกรินนำ:- การเปลี่ยนจาก ubuntu 12.04 server ไปเป็น ubuntu 14.04 server เมื่อเร็วๆนี้ ส่งผลให้มีการเปลี่ยนแปลงวิธีการ config virtualhost บน Apache2 web server เพราะว่า Apache2 web server (2.4.x ขึ้นไป) เช่น 2.4.7 ที่มาพร้อม ubuntu 14.04 server จะมีการจัดการเรื่อง Document root ที่แตกต่างจากเวอร์ชั่นที่ต่ำกว่า เช่น Document root จะอยู่ที่ /var/www/html แทนที่จะเป็น /var/www เหมือนเดิม ดังนั้นเมื่อทำ virtualhost จึงต้องมีการเลือกวางไดเรกทอรีของเว็บเพจที่จะติดตั้ง ตามความคิดเห็นของผมคิดว่าสามารถเลือกวางได้เป็น 2 แบบ แบบที่ 1 วางไว้ที่ /var/www/html/ หรือ แบบที่ 2 วางไว้ที่ /var/www/ มาดูกันครับว่าจะต้องทำอย่างไรบ้าง เริ่มต้นที่หลังจากติดตั้ง ubuntu 14.04 server เสร็จ พร้อมทั้งได้ติดตั้ง packages LAMP หากไม่แน่ใจก็ตรวจสอบ/ติดตั้งเพิ่มด้วยคำสั่ง sudo tasksel ในบทความนี้มีการอ้างถึง editor ที่ใช้แก้ไขไฟล์ชื่อ vi (ผู้เขียนถนัดและชอบ) หากไม่คุ้นเคยวิธีใช้ก็ให้เปลี่ยนเป็น editor ชื่อ nano ซึ่งจะเป็น full screen editor หากต้องการทดสอบทำตามไปด้วย ให้ดาวน์โหลด LSA-router.ova จาก http://ftp.psu.ac.th/pub/psulab/LSA-II/ แล้วนำไป import เข้าโปรแกรม Oracle VM VirtualBox จากนั้น Start VM LSA-router (IP ที่ใช้คือ 10.0.100.1 เป็นทั้ง NAT router, DNS server และ DHCP server) แล้วก็สร้าง New VM ขึ้นมา 1 ตัว โดยตั้งค่า Network เป็นแบบ Internal network และมีค่า name คือ intnet พร้อมทั้งติดตั้ง Ubuntu 14.04 server ให้เสร็จ โดยตั้งค่า IP 10.0.100.9 1.แบบใช้ NameVirtualHost -:การตรวจสอบความพร้อมของ apache2 web server:- เข้าไปที่ไดเรกทอรี mama@ubuntu:$ cd /var/www/html/ เริ่มต้น apache2 web server จะมีไฟล์ index.html มาให้ mama@ubuntu:/var/www/html$ ls index.html ทดสอบด้วยคำสั่ง w3m ได้ mama@ubuntu:/var/www/html$ w3m http://127.0.0.1 เห็นหน้าเว็บเพจ default แสดงข้อความ Apache2 Ubuntu Default Page It work! กด Ctrl+c เลิกดู ลองสร้างไฟล์ test.php mama@ubuntu:/var/www/html$ sudo vi test.php เพิ่มบรรทัด 1 บรรทัด <?php phpinfo() ?> ผลลัพธ์จะมีไฟล์เพิ่มขึ้น

Read More »

การสร้าง virtualhost บน Apache2 web server (2.4.x ขึ้นไป)

ขอเล่าเรื่องการสร้าง virtualhost บน Apache2 web server (2.4.x ขึ้นไป) อย่างง่ายๆ แต่ก็เป็นผลมาจากการเปลี่ยนจาก ubuntu 12.04 server ไปเป็น ubuntu 14.04 server เมื่อเร็วๆนี้ Apache 2.4.x เช่น 2.4.7 ที่มาพร้อม ubuntu 14.04 server จะมีการจัดการเรื่อง Document root ที่แตกต่างจากเวอร์ชั่นที่ต่ำกว่า เช่น Document root จะอยู่ที่ /var/www/html แทนที่จะเป็น /var/www เหมือนเดิม ดังนั้นเมื่อทำ virtualhost จึงต้องมีการวางไดเรกทอรีไว้ที่ /var/www และทำ virtualhost เช่น www.example.com และชี้ documentroot ที่ /var/www/www.example.com มาดูกันครับว่าจะต้องทำอย่างไรบ้าง เริ่มต้นที่หลังจากติดตั้ง ubuntu 14.04 เสร็จแล้ว พร้อมทั้งได้ติดตั้ง packages LAMP หากไม่แน่ใจก็ตรวจสอบด้วยคำสั่ง sudo tasksel ในบทความมีการอ้างถึง editor ที่ใช้แก้ไขไฟล์ชื่อ vi หากไม่คุ้นเคยวิธีใช้ก็ให้เปลี่ยนเป็นคำว่า nano จะเป็น full screen editor ใช้ง่ายกว่า ตรวจสอบว่าเรามีโดเมนเนมแล้ว (check domain name) mama@ubuntu:$ host www.example.com www.example.com is an alias for iserver.example.com. iserver.example.com has address 10.0.100.9 เข้าไปที่ไดเรกทอรี mama@ubuntu:$ cd /var/www/ สร้างไดเรกทอรีชื่อ www.example.com mama@ubuntu:/var/www$ sudo mkdir www.example.com สร้างไฟล์ตัวอย่างของเว็บไซต์ mama@ubuntu:/var/www$ sudo vi www.example.com/index.php มีข้อความเพียง 1 บรรทัด <?php echo “WWW Hello, world!”; ?> ใช้คำสั่งแสดงรายการ จะเห็น mama@ubuntu:/var/www$ ls www.example.com/ index.php ใช้คำสั่งแสดงข้อมูลในไฟล์ จะเห็น mama@ubuntu:/var/www$ cat www.example.com/index.php <?php echo “WWW Hello, world!”; ?> เข้าไปไดเรกทอรีสำหรับจัดการ config site mama@ubuntu:/var/www/html$ cd /etc/apache2/sites-available ใช้คำสั่งแสดงรายการ จะเห็น mama@ubuntu:/etc/apache2/sites-available$ ls 000-default.conf  default-ssl.conf สร้างไฟล์สำหรับ config virtual host ชื่อมี .conf ต่อท้ายด้วย mama@ubuntu:/etc/apache2/sites-available$ sudo cp 000-default.conf www.example.com.conf แก้ไขไฟล์ www.example.com.conf mama@ubuntu:/etc/apache2/sites-available$ sudo vi www.example.com.conf แก้ไขเฉพาะบรรทัดข้างล่างนี้ NameVirtualHost www.example.com:80 <VirtualHost www.example.com:80> ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/www.example.com สั่งให้ apache2 รับ site ใหม่ mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite www.example.com สั่ง reload apache2 mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload ทดสอบ www.example.com ด้วยคำสั่ง w3m mama@ubuntu:/etc/apache2/sites-available$ w3m http://www.example.com จะเห็นหน้าเว็บเพจ WWW Hello, world! กด

Read More »