โดยปกตินั้น Monit นั้นไม่สามารถส่งแจ้งเตือนเป็น SMS ได้ แต่เราจะประยุกต์ให้สามารถส่งได้โดยการให้ไป run bash script ส่ง SMS แทน โดยมีขั้นตอนดังนี้
หาผู้ให้บริการส่ง sms ผ่าน API ในตัวอย่างจะใช้ของ web thsms.com เพื่อทดสอบซึ่งแบบ free จะสามารถส่งได้ 10 ข้อความ แล้วสร้าง file bash script ดังนี้
sudo vim /usr/local/bin/sendsms.sh
โดย username กับ password จะเป็นของ Account ที่สมัครไว้ที่ thsms.com และ TO คือโทรศัพท์ปลายทาง
#!/bin/bash message="Monit: $MONIT_SERVICE - $MONIT_EVENT at $MONIT_DATE on host '$MONIT_HOST': $MONIT_DESCRIPTION." message2=`echo $message |sed -e "s/\ /%20/g" |sed -e "s/\,/%2C/g" |sed -e "s/\:/%3A/g" |sed -e "s/\./%2E/g" |sed -e "s/\-/%2D/g" |sed -e "s/'/%27/g" |sed -e "s/\//%2F/g"` echo $message2 > /home/admins/test.log USERNAME=kruineverdie2 PASSWORD=kruilovesa FROM=0000 TO=085xxxxxxx curl -q "http://www.thsms.com/api/rest?method=send&username=$USERNAME&password=$PASSWORD&from=$FROM&to=$TO&message=$message2"
sudo chmod 755 /usr/local/bin/sendsms.sh
ทำการตั้งค่า Event เพื่อทดสอบในตัวอย่างจะให้ check file doc.txt ใน path /home/admins/doc.txt ว่ามี timestamp เปลี่ยนแปลงหรือไม่ ซึ่งเมื่อเปลี่ยนแปลงให้ทำการ run scipt ส่ง SMS
sudo vim /etc/monit/monitrc
เพิ่ม config นี้ลงไป
check file doc.txt with path /home/admins/doc.txt if changed timestamp then exec "/usr/local/bin/sendsms.sh" as uid root and gid root
แล้ว restart service monit
sudo service monit restart
ทดสอบโดยการเปิดไฟล์ doc.txt แล้วเปลี่ยนแปลงค่าแล้ว save เพื่อให้ timestamp เปลี่ยน
monitor monit log
tail -f /var/log/monit.log
ข้อความในโทรศัพท์จะเป็นแบบรูปด้านล่าง