linux training in Thailand
| Home | Articles | Webboard | Download | FreeTips | Resources | Training | Blog | Web Link |
| Courses | Schedule | Price | Promotion | Map | Customer Ref. | Instructors | Certification | FAQ |
เนื่องจากเราจะปิดทำการ 4 วัน ในวันที่ 1-4 พฤษภาคม 2551 กรุณาติดต่อ โทร. 089-890-5494

สร้างหน่วยกู้ภัยและแจ้งเหตุบนลีนุกซ์ดัวย MONIT

โดย ธีรภัทร มนตรีศาสตร์,RHCE,LPIC-2
นพดล นามราชา

องค์กรต่างๆ ในปัจจุบันได้เริ่มมีการนำระบบลีนุกซ์มาใช้ในองค์กรมากขึ้น โดยส่วนใหญ่จะนำมาใช้งานเป็นเซิร์ฟเวอร์เพื่อรองรับการรันแอปพลิเคชั่นและงานบริการต่างๆ ซึ่งจะช่วยลดค่าใช้จ่ายทั้งฮาร์ดแวร์ ซอฟต์แวร์ ( ค่า License ต่างๆ ) โดยอาจจะทดแทนระบบ Windows หรือ UNIX ที่มีราคาและค่าบำรุงรักษาแพงๆ ได้ และลีนุกซ์ก็ยังใช้งานได้ดีอีกด้วย เช่น Mail Server, Database Server, Proxy Server, Web Server และ Files Server เป็นต้น ในบางครั้งที่เวลารันงานบริการต่างๆ จะมีบางงานบริการบางงานที่หยุดทำงานไปด้วยสาเหตุต่างๆ ทำให้ระบบไม่สามารถบริการได้ ( System Down ) ซึ่งในบางครั้งผู้ดูแลระบบ ไม่สามารถล่วงรู้ได้ โดยอาจไม่อยู่ในสำนักงานทำให้ไม่สามารถที่จะเผ้าดูแล ( monitor ) ได้ตลอดเวลา หรือในบางครั้งที่สภาพแวดล้อม ต่างๆ ของระบบมีการแก้ไขหรือถูกเปลี่ยนแปลงไป เช่น ถูก Hack, มีการแก้ไขไฟล์ หรืออื่นๆ ก็จะไม่สามารถรู้ได้ ด้วยเหตุนี้จึงเป็นเรื่องที่น่าหนักใจสำหรับ Admin บางท่านที่ต้องการหาวิธีการแก้ไข และแจ้งเหตุหากมีเหตุการณ์ดังกล่าวเกิดขึ้น MONIT หน่วยกู้ภัยและแจ้งเหตุที่ MONIT เป็น Utility ที่ใช้สำหรับตรวจการ และจัดการ Process, Files, Directory และ Device ต่างๆ บนระบบ UNIX. MONIT สามารถที่จะทำงาน, บำรุงรักษาระบบ, ซ่อมแซมระบบได้โดยอัตโนมัติ และสามารถที่จะทำการ Execute/Restart โปรแกรม ในกรณีที่เกิด Error หรือโปรแกรมนั้นไม่ทำงานหรือไม่สามารถตอบสนองได้ หรือหากโปรแกรมนั้นใช้ทรัพยากรของระบบมากเกินไป ก็จะทำการ Restart Process ท่านอาจจะใช้ MONIT ในการ Monitor Files, Directory หรือ อุปกรณ์ต่างๆ ที่เปลี่ยนแปลง เช่น เวลาของไฟล์เปลี่ยนไป ( File Timestamp ) , Checksum เปลี่ยน หรือขนาดของไฟล์มีการเปลี่ยนแปลง MONIT มีการควบคุมการทำงานที่ง่ายๆ ผ่านทางไฟล์คอมฟิกธรรมดา สามารถแก้ไขเปลี่ยนคุณสมบัติของโปรแกรมได้ด้วยโปรแกรมแก้ไขข้อความ ( Text Editor ) ทั่วๆ ไป ส่วนผลลัพธ์การรายงานสถานะต่างๆ จะเป็นการเก็บลงสู่ Log files สามารถที่จะเลือกได้ว่าจะเก็บบันทึกโดยผ่านระบบ syslog ซึ่งเป็นบริการมาตรฐานของยูนิกซ์ทั่วไป หรือจะเป็นที่ Log ของตัว MONIT เองก็ได้ การแจ้งเตือน ( Alert ) ตามเงื่อนไขของการตั้ง Error ผ่านทาง Alert message ที่เราสามารถกำหนดทั้งเงื่อนไขและรูปแบบการแจ้งเตือนได้ด้วยตนเอง. ไม่ใช่เฉพาะงานเฝ้าระวังระดับ Local เท่านั้น MONIT สามารถที่จะทำการตรวจสอบโปรโตคอล TCP/IP ได้หลายรูปแบบทั้ง TCP หรือ UDP นอกจากที่สามารถควบคุมการทำงานผ่านทางคอนฟิกไฟล์ได้แล้ว ยังสามารถที่จะใช้ Web Browser ในการเข้าถึง MONIT Server เพื่อตรวจสอบการทำงาน และสามารถที่จะทำการ Restart Service ได้ด้วย


รูปที่ 1. แสดงคุณสมบัติของ Monit


ติดตั้ง MONIT ได้เห็นคุณสมบัติของ MONIT แล้ว อาจจะคิดว่า MONIT เป็นโปรแกรมที่มีความซับซ้อนและยุ่งยาก แต่ความจริงแล้ว MONIT เป็นโปรแกรมที่ติดตั้งง่ายมาก ส่วนด้านการคอนฟิกถึงจะมีความหลากหลายในคุณสมบัติของมันแต่ก็สามารถทำความเข้าใจโดยแบ่งออกเป็นหมวดหมู่อย่างชัดเจนจึงทำให้เรื่องการคอนฟิกเป็นงานที่ไม่ซับซ้อนเกินกว่าจะศึกษาและปฏิบัติได้ ส่วนสำคัญที่น่ายกย่องสำหรับโปรเจคนี้ก็คือ เอกสารคู่มือการติดตั้งใช้งานที่ผู้พัฒนาจัดทำไว้ที่เว็บไซต์ ( http://www.tildeslash.com/monit/ ) นับว่าเป็นเอกสารที่ครบถ้วนสมบูรณ์มาก สรุปขั้นตอนได้คือ
  1. ดาวน์โหลดโปรแกรม MONIT จากเว็บไซต์ผู้พัฒนา (http://www.tildeslash.com/monit/dist/monit-4.4.tar.gz) หรือ Version ที่ใหม่กว่านี้ได้ ไปไว้ที่ /tmp หรือที่อื่นตามใจท่าน
  2. แตกไฟล์ Tar ball ออกจะได้ตัวโปรแกรมต้นฉบับเป็นไดเร็คทอรี่ manit-4.4 ให้เข้าไปแล้วคอมไพล์และติดตั้งโปรแกรม
# tar zxvf monit-4.4.tar.gz # cd monit-4.4 # ./configure (สามารถดู option เพิ่มเติมได้ ./configure -help) # make # make install
หลังจากที่ติดตั้งเสร็จแล้ว โดยค่าปรกติตัวโปรแกรมจะติดตั้งลงที่ /usr/local/bin และ Man Page จะติดตั้งไว้ใน /usr/local/man/man1
วิธีการ Monitor
หลังจาก Start monit ให้ทำงาน Monit จะทำการเรียกคอนฟิกจาก ~/.monitrc แต่ถ้าไม่เจอจะไปเรียกที่ /etc/monitrc หากไม่เจออีกสุดท้ายจะไปเรียกที่ ./monitrc นอกจากนี้เราสามารถที่จะ Start monit โดยการระบุ Option เพื่อระบุตำแหน่งที่เก็บไฟล์คอนฟิกได้ด้วยพารามิเตอร์ -c ซึ่งเหมาะสำหรับการใช้คอนฟิกที่แตกต่างกันเพื่อการทดสอบระบบ
# monit -c /ที่เก็บ File config

ก่อนการรัน MONIT จริงๆ สามารถตรวจสอบความถูกต้องของข้อความในคอนฟิกได้โดยใช้พารามิเตอร์ -t
# monit -t Control file Syntax OK
การควบคุมให้เริ่มทำงานหรือยุติการทำงาน
# monit      -> Start monit
# monit quit     -> Stop monit

การคอนฟิกใช้งาน MONIT เบื้องต้น
ไฟล์คอนฟิกของ MONIT ประกอบด้วย 2 ส่วน คือ

  1. Global set entries เป็นตัวแปรที่เกี่ยวข้องกับการทำงานโดยทั่วไปของโปรแกรม MONIT ได้แก่ ความถี่หรือระยะเวลาในการตรวจสอบระบบ ระบบจัดเก็บบันทึกเหตุการณ์ ( Log file ) ชื่ออีเมล์แอดเดรสที่ใช้แจ้งเตือนหรือรายงาน
  2. One or more service entries เป็นตัวแปรที่ระบุประเภท เงื่อนไข และผลตอบสนองเฉพาะเรื่อง ดูจากตัวอย่างของการคอนฟิกต่อไปนี้คงจะเห็นภาพว่าเข้าใจได้ง่ายเพราะมีลักษณะคล้ายกับคำบรรยายเท่านั้นเอง



รูปที่ 2. แสดงตัวอย่างคอนฟิกของ MONIT


จากตัวอย่างเป็นการกำหนดให้ MONIT เฝ้าจับตาดูโปรเซส ( คำสั่ง check process ) ของโปรแกรม Squid ( HTTP Proxy Server ) หาก Squid หยุดทำงานลง MONIT จะทำการ Restart Squid ให้ใหม่โดยอัตโนมัติ และทำการแจ้ง Alert ไปยังอีเมล์แอดเดรสที่เรากำหนดไว้ด้วยคำสั่ง set alert

หรือการการตรวจสอบสถานะการเชื่อมต่อ ( คำสั่ง check host ) ระหว่างสาขาของบริษัท หาก Link Down ก็จะทำการ Alert ให้ผู้ดูแลระบบทราบเพื่อดำเนินการแก้ไขได้ทันเวลา. ตัวอย่างข้อความที่แจ้งเตือนไปยังผู้ดูแลระบบ แสดงดังรูปที่ 3 และ 4




รูปที่ 3. แสดงข้อความในอีเมล์ที่ได้รับจาก MONIT





รูปที่ 4. MONIT แจ้งว่าได้ Restart โปรแกรม Squid ให้แล้ว



MONIT กับ Web Interface
นอกจากจะเป็น "สุนัขเฝ้าบ้าน" ที่ซื่อสัตย์แล้ว MONIT ยังมีระบบอินเทอร์เฟสกับผู้ใช้งานผ่าน Web ได้อีกด้วย โดยจะเปิดให้ใช้เว็บบราวเซอร์เข้าติดต่อได้ผ่านทางพอร์ต 2812 ซึ่งท่านสามารถกำหนดให้เปิดบริการ Web Interface นี้ได้ด้วยคำสั่งตามตัวอย่างนี้
set httpd port 2812
allow localhost
allow 10.1.1.1
allow hauk:password

# adsl-setup
adsl-setup จะสอบถามข้อมูลทีละคำถาม ให้ตอบไปตามลำดับ เช่น ชื่อล๊อกอิน รหัสผ่าน เป็นต้น ดังรูปที่ 4 เมื่อจบขั้นตอนนี้โปรแกรมจะจัดเก็บชื่อและรหัสผ่านไว้ที่ไฟล์ /etc/ppp/pap-secrets ดังรูปที่ 5
หลังจาก start โปรแกรม MONIT แล้ว จะเข้ามาสู่ Web Interface นี้ได้ด้วย URL
http://localhost:2812


ซึ่งจะแสดงเว็บเพจรายงานสถานะของโฮสต์ให้ทราบได้ ดังรูปที่ 5



รูปที่ 5 แสดง Web Interface ที่ใช้มอนิเตอร์และควบคุม MONIT

นอกจากนี้ Monit ยังมีความสามารถอีกมากมาย ที่จะช่วยแบ่งเบาภาระของผู้ดูแลระบบในด้านการ Monitor และตรวจสอบการทำงานของระบบ ซึ่งแล้วแต่สภาพการใช้งานที่จะนำไปประยุกต์ใช้ให้เกิดประโยชน์ และเหมาะสมกับหน่วยงานของตนเอง นอกจากนี้แล้วลีนุกซ์ยังมีโปรแกรมสนับสนุนต่างๆ อีกมากมายที่น่าสนใจ และสามารถนำมาใช้งานได้จริงในองค์กร ผู้เขียนอยากให้ทุกคนหันมาสนใจลีนุกซ์กันเยอะๆ แล้วท่านจะรู้ว่าลีนุกซ์สามารถลดค่าใช้จ่ายในองค์ของท่านได้จริงๆ เช่น Mail Server ( เปรียบเทียบกับ MS Exchange ที่ราคา Licenses ละ 3,000 บาท ) และหวังว่าบทความนี้คงจะเป็นแนวทางทำให้มีการนำเอาลีนุกซ์ไปใช้ช่วยแก้ไขปัญหาและทดแทนระบบเดิมๆ ได้บ้างนะครับ

แหล่งข้องมูลอ้างอิง
http://www.tildeslash.com/monit/ - Monit Linux System Management Homepage