Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Simple monit script for mongodb
check host mongodb with address localhost
start program = "/usr/bin/sudo /opt/database/mongo/bin/mongod"
stop program = "/usr/bin/sudo /usr/bin/pkill -f mongod"
if failed port 28017 protocol HTTP
request /
with timeout 10 seconds
then start

ptecza commented Mar 17, 2011

Very tricky way :) Thanks a lot for the inspiration! I'm going to use it for my Monit.

ptecza commented Mar 17, 2011

And this is my Monit config for MongoDB on Ubuntu box (it should work for Debian too):

check process mongodb with pidfile /db/path/mongod.lock
   group database
   start program = "/etc/init.d/mongodb start"
   stop  program = "/etc/init.d/mongodb stop"
   if failed host 127.0.0.1 port 28017 protocol http
     and request "/" with timeout 10 seconds then restart
   if 5 restarts within 5 cycles then timeout

The biggest difference is that I used also MongoDB PID file. I'm sharing it, because I hope it can be useful for other people as well.

antani commented Jul 6, 2011

I cant get this above script working on Ubuntu VPS. My mongodb has been changed to start/stop as service and not as /etc/init.d - is there a way to fix this ?

ptecza commented Jul 6, 2011

Sorry, but I'm not too experienced with Ubuntu Upstart, so probably I can't help you a lot...

I guess you can use something like below for starting/stopping your MongoDB:

start program = "/sbin/start mongodb"
stop  program = "/sbin/stop mongodb"

But I don't have an idea about MongoDB PID file in your scenario...

I tried ptecza's way on my CentOS system but Monit claims Mongo is not running (even though it does). I'm shooting in the dark that Monit cannot check contents of /var/lib/mongo/mongo.lock because the file is executable by Mongo. Any ideas?

So after poking about I just added 3 lines to the start part of the MongoDB's init script:

sleep 5
cp $DBPATH/mongo.lock /var/run/mongo.pid
chmod -x /var/run/mongod.pid

Then pointed Monit at the new PID file. Also added line to remove the PID file when Mongo is stopped.

virajp commented Apr 29, 2013

Does this work even if the MongoDB requires authentication ?

I have problem. I try to use this config for monitoring my mongo service. But my mongo server has authentication and monit is failed. I've tried to use next variant:
if failed url http://admin:password123@mongo.server.com:28017/ for 1 cycles then alert
But it didn't work.
Do You have any ideas for fix it?

Check port 27017 ; ) Ex.: if failed host x.x.x.x port 27017

rseward commented Aug 30, 2016

Centos 7 - mongod monit check snippit.

check process mongodb with pidfile /var/lib/mongo/mongod.lock
group database
start program = "/bin/systemctl start mongod"
stop program = "/bin/systemctl stop mongod"
if failed host 127.0.0.1 port 28017 protocol http
and request "/" with timeout 10 seconds then restart
if 5 restarts within 5 cycles then timeout

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment