โดยปกตินั้น 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

ข้อความในโทรศัพท์จะเป็นแบบรูปด้านล่าง

Comments are closed.