การตรวจสอบสถานะการให้บริการ 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 -O /tmp/\${url${i}}-tmp
     eval echo "Get URL : http://\${url${i}}$path"
     status=$(eval grep $searchtxt /tmp/\${url${i}}-tmp | wc -l)
     if [ $status -ge "1" ]; then
        eval echo \${url${i}}" : STATUS = UP"
        eval echo \${url${i}}" UP" >> /tmp/server-status
     else
        eval echo \${url${i}}" : STATUS = DOWN"
        eval echo \${url${i}}" DOWN" >> /tmp/server-status
     fi
  done
  echo "Sleep 15 secs....."
  sleep 15
  /usr/bin/clear
done

*ตัวอย่างรูปแบบ bash shell

#!/bin/bash
url[1]='webserver1.testlab'
url[2]='webserver2.testlab'
searchtxt='WEBSERVER'
#URL PATH
path='/'
while(true);
do
  cp /dev/null /tmp/server-status
  for i in {1..2}
  do
     wget -q --timeout 2 --connect-timeout=10 -t 1 http://${url[$i]}$path -O /tmp/${url[$i]}-tmp
     echo "Get URL : http://${url[$i]}$path"
     status=$(grep $searchtxt /tmp/${url[$i]}-tmp | wc -l)
     if [ $status -ge "1" ]; then
        echo ${url[$i]}" : STATUS = UP"
        echo ${url[$i]}" UP" >> /tmp/server-status
     else
        echo ${url[$i]}" : STATUS = DOWN"
        echo ${url[$i]}" DOWN" >> /tmp/server-status
     fi
  done
  echo "Sleep 15 secs....."
  sleep 15
  /usr/bin/clear
done

– ทำการเปลี่ยน permission ให้สามารถ execute ได้

chmod 755 checkweb.sh

– ทดสอบ execute script จะได้ข้อความดังนี้

testlab@lbs:~$ ./checkweb.sh 
Get URL : http://webserver1.testlab/
webserver1.testlab : STATUS = UP
Get URL : http://webserver2.testlab/
webserver2.testlab : STATUS = UP
Sleep 15 secs.....

สามารถนำ script ดังกล่าวไปปรับเปลี่ยนเพื่อใช้ในการรันเป็น daemon ได้ตามสะดวกครับ

Comments are closed.