Monit สิ่งที่คนทำ Server ควรรู้
เนื่องจากผมเป็นคนหนึ่งที่ใช้ Cron + Daemon ในการให้ Bot จัดเก็บข้อมูลตลอดเวลา แต่เนื่องจากปัญหาการเกิด Crond ในระบบปฎิบัติการ มากทำให้ผมเขียน Script ตัวหนึ่งซึ่งเป็นการ “killall crond” ซึ่งคือฆ่า cron ทิ้งแล้วทำไมต้องฆ่า cron ทิ้งเพราะมันเคยมีเหตุการณ์ว่า cron ค้างอยู่ในระบบ 400 กว่า process ทำให้ผมไม่สามารถเข้าถึงเครื่อง server ได้จาก ssh สุดท้ายคือต้อง kill ผ่าน directadmin ซึ่งทรมาณมาก โดยสาเหตุมันคือการที่ “Cron จะเขียนไฟล์ Process ลง Disk แต่ทว่า Disk มีการใช้งานอย่างหนัก ทำให้ไม่สามารถ Write ลงไปได้สุดท้ายคือ รอๆๆๆ แล้ว cron ก็ทำงานทุก 1 นาที ทำให้สุดท้ายไม่มีการ write process ค้างเครื่องเข้าไม่ได้”
ดังนั้นพอผมทำ killall crond + start ขึ้นมาปัญหาที่ตามมาก็คือ บางจังหวะ (case ล่าสุด) ตอนที่เรา killall crond แล้วพอจะ start มันไม่สามารถ write pid file ลงได้ (เกี่ยวกับ ram/disk เช่นเคย) ทำให้มันไม่มีการ start ขึ้นมา แล้วการที่ไม่มีตัวอะไรมาดู service เหล่านี้แทนเรา ทำให้ผมต้องเก็บข้อมูลในอดีต 3 วันแบบกึ่ง manual ซึ่งเสียเวลามาก ก็เลยลองหาว่าจะใช้ตัว Monitoring Service ตัวไหนดีเพราะ directadmin ส่วนใหญ่ก็ดูให้แค่ apache กับ mysql
จนมาเจอ Monit ตัวนี้ครับซึ่งการเขียน Config อาจจะลำบากนิดนึงแต่ผมเอา Link มาฝากสำหรับคนที่ใช้ Centos กันด้วยนะครับ
- http://www.lifelinux.com/how-to-install-monit-on-centos-redhat/ < วิธี Install Monit
- http://www.iredmail.org/forum/topic565-faq-how-to-monitor-mail-related-service-with-monit.html < Script Config
โดยวิธีลงอะไรต่างๆลองอ่านจากลิงค์ที่ผมนำมาฝากนะครับ ผมจะเล่าการทำงานคร่าวๆของมันให้ฟังนะครับ
- Monit เป็น Daemon ตัวหนึ่งที่ทำหน้าที่คอยตรวจตรา Process / CPU / Ram ของเราว่าเมื่อเกิดเหตุการณ์แบบนี้ให้ทำยังไง
- โดยการเขียนใบบอกนั้นจะคล้ายๆ if then else เลย เช่น เมื่อ Ram เหลือต่ำกว่า 1gb ให้ Email เป็นต้น
- Monit ก็เป็น Process ตัวหนึ่งที่อาจจะโดน Kill ได้ดังนั้น อย่าลืมทำ Cron Script ซึ่ง Check Process ของ Monit อีกทีด้วยครับ
สรุปการใช้ Monit ไม่ได้ทำให้เกิด 100% Server ไม่ Down แต่อย่างน้อยมันก็ทำให้เกิด Pair Checking คือการถูกเช็คทั้งสองทางทั้ง Monit เช็ค cron และ cron เช็ค Monit ทำให้โอกาสที่ Service จะ Down แบบไม่รู้เรื่องเลยก็คือตายพร้อมกันทั้งสองตัว ซึ่งโอกาสเกิดก็คงน้อยกว่าตัวใดตัวหนึ่งตายครับผม หวังว่าบทความนี้จะทำให้งานของ Server Admin สบายขึ้นนะครับ ![]()
