Steven SullivanSteven Sullivan - 29th September 2016

TextBelt is a free service whereby you can receive SMS messages for free. It’s as simple as this:

curl -X POST http://textbelt.com/text \
   -d number=5551234567 \
   -d "message=I sent this message for free with textbelt.com"

So wouldn’t this be cool if we could integrate this with Monit? Well I did just that. With a few lines of code you can receive SMS messages when one of your monit programs goes offline.

Let’s get it straight first, I use Monit on all of my servers, and now with the combination of TextBelt I can get notified by SMS too. I already have multiple notifications but one extra doesn’t hurt!

TextBelt: Let’s get started

Create a new file named MonitSMS.sh in your /root directory (or wherever you prefer – i use root because I manage many different type of OS) and paste the following code:

#!/bin/sh
/usr/bin/curl \
-X POST http://textbelt.com/text \
   -d number=1111111111 \
   -d "message=[$MONIT_HOST] $MONIT_SERVICE - $MONIT_DESCRIPTION"

Change 1111111111  to your cell/mobile phone number. Give it 777 permissions.

chmod 777 /root/MonitSMS.sh

Run it once if you like, you should at that point receive a SMS message to your phone.

Integration with Monit

I believe it’s best to use it when your Monit configuration does a timeout and Monit no longer monitors the process. All you need to do next is attach the following code to any/all processes.

if 5 restarts within 5 cycles then exec "/root/MonitSMS.sh"

 A full Monit example of monitoring a process…

check process NGINX with pidfile /var/run/nginx.pid
     group nginx
     start program = "/sbin/service nginx restart"
     stop program  = "/sbin/service nginx stop"
     if failed host blog.ss88.us port 443 type TCPSSL for 3 cycles then restart
     if 5 restarts within 5 cycles then exec "/root/MonitSMS.sh"

 

And that’s it!

Leave a Reply

Your email address will not be published. Required fields are marked *