Real-world configuration examples

Here we show some real-world configuration examples for monit. It can be usefull to look at the examples to see how a service is running, where it put its pidfile, how to call the start and stop methods for a given service, etc.


System Services

Cron (program timer)

When used with Solaris the init.d script needs a modification. Add the following line after start of cron according to the Monit FAQ:

         /usr/bin/pgrep -x -u 0 -P 1 cron > /var/run/cron.pid 

 check cron with pidfile /var/run/cron.pid
   start program = "/etc/init.d/cron start"
   stop  program = "/etc/init.d/cron stop"
   checksum /etc/init.d/cron
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

Gdm (gnome desktop manager)

 check gdm with pidfile /var/run/gdm.pid
   start program = "/etc/init.d/gdm start"
   stop program = "/etc/init.d/gdm stop"
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

Inetd (internet service manager)

 check inetd with pidfile /var/run/inetd.pid
   start program = "/etc/init.d/inetd start"
   stop program = "/etc/init.d/inetd stop"
   host 192.168.1.1 port 25 protocol smtp  # e.g. exim 
   host 192.168.1.1 port 515               # e.g. cups-lpd
   host 192.168.1.1 port 113               # e.g. ident
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

Syslogd (system logfile daemon)

 check syslogd with pidfile /var/run/syslogd.pid
   start program = "/etc/init.d/sysklogd start"
   stop program = "/etc/init.d/sysklogd stop"
   timestamp "/var/log/syslog" > 65 minutes 
             then alert                    # Have you seen "-- MARK --"?
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

Xfs (X font server)

 check xfs with pidfile /var/run/xfs.pid
   start program = "/etc/init.d/xfs start"
   stop program = "/etc/init.d/xfs stop"
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

YPBind (Yellow page bind daemon)

 check ypbind with pidfile /var/run/ypbind.pid
   start program = "/etc/init.d/nis start"
   stop program = "/etc/init.d/nis stop"
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

Net-SNMP (SNMP agent)

 check snmpd with pidfile /var/run/snmpd
   start program = "/etc/init.d/snmpd start"
   stop program = "/etc/init.d/snmpd stop"
   host 192.168.1.1 port 161 type udp
   host 192.168.1.1 port 199 type tcp
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

FTP Services

Proftpd

 check proftpd with pidfile /var/run/proftpd.pid
   start program = "/etc/init.d/proftpd start"
   stop program  = "/etc/init.d/proftpd stop"
   host 192.168.1.1 port 21 protocol ftp
   timeout (5,5)
   alert foo@bar
   alert 123456@sms on { timeout }

Login Services

SSHD

 check sshd with pidfile /var/run/sshd.pid
   start program  "/etc/init.d/sshd start"
   stop program  "/etc/init.d/sshd stop"
   host 192.168.1.1 port 22 protocol ssh
   timeout(5, 5)
   alert foo@bar
   alert 123456@sms on { timeout }

WWW Services

Apache (web server)

Hint: It is advisable to use a token file for monit. Thus, it is easily possible to filter out the accesses done by monit.

In some cases init scripts for apache and apache-ssl are separated, e.g. Debian Linux.

 check apache with pidfile /opt/apache_misc/logs/httpd.pid
   start program = "/etc/init.d/apache start"
   stop  program = "/etc/init.d/apache stop"
   host 192.168.1.1 port 80 
        protocol HTTP request /monit/token
   host 192.168.1.1 port 443 type TCPSSL 
        certmd5 12-34-56-78-90-AB-CD-EF-12-34-56-78-90-AB-CD-EF
	protocol HTTP request /monit/token 
   group www
   timeout(5,5)
   checksum /etc/init.d/apache
   checksum /opt/apache/bin/httpd
   alert foo@bar
   alert 123456@sms on { timeout }

Zope (application server)

 check zope with pidfile /opt/Zope/var/zProcessManager.pid
   start program = "/etc/init.d/zope start"
   stop  program = "/etc/init.d/zope stop"
   group www
   host 192.168.1.1 port 8080 protocol HTTP
   timeout(5, 5)
   every 5
   alert foo@bar
   alert 123456@sms on { timeout }

Squid (http/ftp proxy)

 check squid with pidfile /opt/squid/logs/squid.pid
   start program = "/etc/init.d/squid start"
   stop  program = "/etc/init.d/squid stop"
   group www
   host 192.168.1.1 port 3128 
   timeout(5,5)
   checksum /etc/init.d/squid
   checksum /opt/squid/bin/squid
   alert foo@bar
   alert 123456@sms on { timeout }

Privoxy (spamfilter proxy)

 check privoxy with pidfile /opt/privoxy/var/privoxy.pid
   start program = "/etc/init.d/privoxy start"
   stop  program = "/etc/init.d/privoxy stop"
   group www
   timeout(5,5)
   host 192.168.1.1 port 8118 
   checksum /etc/init.d/privoxy
   checksum /opt/privoxy/sbin/privoxy
   alert foo@bar
   alert 123456@sms on { timeout }

Mail Services

Postfix (mail server)

 check postfix with pidfile /var/spool/postfix/pid/master.pid
   start program = "/etc/init.d/postfix start"
   stop  program = "/etc/init.d/postfix stop"
   host 192.168.1.1 port 25 protocol smtp
   group mail
   timeout(5, 5)
   checksum /etc/init.d/postfix
   alert foo@bar
   alert 123456@sms on { timeout }

Sendmail (mail server)

 check sendmail with pidfile /var/run/sendmail.pid
   start program = "/etc/init.d/sendmail start"
   stop  program = "/etc/init.d/sendmail stop"
   group mail
   host 192.168.1.1 port 25 protocol smtp
   checksum /etc/init.d/sendmail
   checksum /usr/lib/sendmail
   alert foo@bar
   alert 123456@sms on { timeout }

Qpopper (pop3 server)

 check qpopper with pidfile /var/run/popper.pid
   start program = "/etc/init.d/qpopper start"
   stop  program = "/etc/init.d/qpopper stop"
   group mail
   timeout(5, 5)
   host 192.168.1.1 port 110 type TCP protocol POP
   checksum /etc/init.d/qpopper
   checksum /opt/sbin/popper
   alert foo@bar
   alert 123456@sms on { timeout }

Sophie (virus scan daemon)

 check sophie with pidfile /var/run/sophie.pid
   start program = "/etc/init.d/sophie start"
   stop  program = "/etc/init.d/sophie stop"
   unix /var/run/sophie
   group mail
   timeout(5, 5)
   checksum /etc/init.d/sophie
   checksum /opt/virus/sophie/sophie
   alert foo@bar
   alert 123456@sms on { timeout }

Trophie (virus scan daemon)

 check trophie with pidfile /var/run/trophie.pid
   start program = "/etc/init.d/trophie start"
   stop  program = "/etc/init.d/trophie stop"
   unix /var/run/trophie
   group mail
   timeout(5, 5)
   checksum /etc/init.d/trophie
   checksum /opt/virus/trophie/trophie
   alert foo@bar
   alert 123456@sms on { timeout }

Spamassassin daemon (spam scan daemon)

 check spamd with pidfile /var/run/spamd.pid
   start program = "/etc/init.d/spamd start"
   stop  program = "/etc/init.d/spamd stop"
   group mail
   timeout(5, 5)
   checksum /etc/init.d/spamd
   checksum /usr/local/bin/spamd
   alert foo@bar
   alert 123456@sms on { timeout }

Database Services

MySQL Server

The name of the pidfile consists usually of the fully quallified domainname and pidfile as extension.

check mysql with pidfile /opt/mysql/data/myserver.mydomain.pid
   start program = "/etc/init.d/mysql start"
   stop program = "/etc/init.d/mysql stop"
   host 192.168.1.1 port 3306
   group database
   timeout(5, 5)
   checksum /etc/init.d/mysql
   checksum /opt/mysql/bin/mysqld
   alert foo@bar
   alert 123456@sms on { timeout }

OpenLDAP slapd (Debian package)

check slapd with pidfile /var/run/slapd.pid
   start program = "/etc/init.d/slapd start"
   stop program = "/etc/init.d/slapd stop"
   host 192.168.1.1 port 389 protocol ldap3
   group database
   timeout(5, 5)
   checksum /etc/init.d/slapd
   checksum /usr/sbin/slapd
   alert foo@bar
   alert 123456@sms on { timeout }

File Services

Samba (windows file/domain server)

Hint: For enhanced controllability of the service it is handy to split up the samba init file into two pieces, one for smbd (the file service) and one for nmbd (the name service).

 check smbd with pidfile /opt/samba2.2/var/locks/smbd.pid
   start program = "/etc/init.d/smbd start"
   stop  program = "/etc/init.d/smbd stop"
   host 192.168.1.1 port 139 type TCP 
   group samba
   checksum /opt/samba2.2/sbin/smbd
   alert foo@bar
   alert 123456@sms on { timeout }
 check nmbd with pidfile /opt/samba2.2/var/locks/nmbd.pid
   start program = "/etc/init.d/nmbd start"
   stop  program = "/etc/init.d/nmbd stop"
   host 192.168.1.1 port 138 type UDP 
   host 192.168.1.1 port 137 type UDP 
   group samba
   checksum /opt/samba2.2/sbin/nmbd
   alert foo@bar
   alert 123456@sms on { timeout }

Printing Services

LPRng (printer daemon)

 check lprng with pidfile /var/run/lpd.515
   start program = "/etc/init.d/lprng start"
   stop  program = "/etc/init.d/lprng stop"
   host 192.168.1.1 port 515 type TCP 
   group printer
   checksum /etc/init.d/lprng
   checksum /opt/lprng/sbin/lpd
   alert foo@bar
   alert 123456@sms on { timeout }

Sun ONE Services

iPlanetDirectoryServer slapd

 check ldap-master
  with pidfile /usr/iplanet/ldapmaster/slapd-master-1/logs/pid
   start program  "/usr/iplanet/ldapmaster/slapd-master-1/start-slapd"
   stop program  "/usr/iplanet/ldapmaster/slapd-master-1/stop-slapd"
   timeout(5, 5)
   host 192.168.1.1 port 389 protocol ldap3
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetMessagingServer MTA dispatcher

 check mta-dispatcher 
  with pidfile /usr/iplanet/msg-ims-1/config/pidfile.imta_dispatch
   start program  "/usr/iplanet/msg-ims-1/imsimta start dispatcher"
   stop program  "/usr/iplanet/msg-ims-1/imsimta stop dispatcher"
   group messaging
   timeout(5, 5)
   host 192.168.1.1 port 25 protocol smtp
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetMessagingServer MTA job controler

 check mta-job_controller 
  with pidfile /usr/iplanet/msg-ims-1/config/pidfile.imta_jbc
   start program  "/usr/iplanet/msg-ims-1/imsimta start job_controller"
   stop program  "/usr/iplanet/msg-ims-1/imsimta stop job_controller"
   group messaging
   timeout(5, 5)
   host 192.168.1.1 port 28442
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetMessagingServer stored

 check store with pidfile /usr/iplanet/msg-ims-1/config/pidfile.store
   start program  "/usr/iplanet/msg-ims-1/start-msg store"
   stop program  "/usr/iplanet/msg-ims-1/stop-msg store"
   group messaging
   timestamp "/usr/iplanet/msg-ims-1/config/stored.ckp" > 10 minutes then alert
   timestamp "/usr/iplanet/msg-ims-1/config/stored.lcu" > 15 minutes then alert
   timestamp "/usr/iplanet/msg-ims-1/config/stored.per" > 70 minutes then alert
   timeout(5, 5)
   alert foo@bar
   alert 123456@sms on { timestamp timeout }

iPlanetMessagingServer mshttpd

 check webmail with pidfile /usr/iplanet/msg-ims-1/config/pidfile.http
   start program  "/usr/iplanet/msg-ims-1/start-msg http"
   stop program  "/usr/iplanet/msg-ims-1/stop-msg http"
   group messaging
   timeout(5, 5)
   host 192.168.1.1 port 80 protocol http
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetMessagingServer popd

 check pop3 with pidfile /usr/iplanet/msg-ims-1/config/pidfile.pop
   start program  "/usr/iplanet/msg-ims-1/start-msg pop"
   stop program  "/usr/iplanet/msg-ims-1/stop-msg pop"
   group messaging
   timeout(5, 5)
   host 192.168.1.1 port 110 protocol pop
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetMessagingServer imapd

 check imap4 with pidfile /usr/iplanet/msg-ims-1/config/pidfile.imap
   start program  "/usr/iplanet/msg-ims-1/start-msg imap"
   stop program  "/usr/iplanet/msg-ims-1/stop-msg imap"
   group messaging
   timeout(5, 5)
   host 192.168.1.1 port 143 protocol imap
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetMessagingServer madmand (SNMP subagent)

 check snmp-subagent with pidfile /usr/iplanet/msg-ims-1/config/pidfile.snmp
   start program  "/usr/iplanet/msg-ims-1/start-msg snmp"
   stop program  "/usr/iplanet/msg-ims-1/stop-msg snmp"
   group messaging
   timeout(5, 5)
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetMessagingServer MMP (POP3/IMAP4/SMTP proxy)

 check mmp with pidfile /usr/iplanet/mmp-ims2/pidfile
   start program  "/usr/iplanet/mmp-ims2/AService.rc start"
   stop program  "/usr/iplanet/mmp-ims2/AService.rc stop"
   group messaging
   timeout(5, 5)
   host 192.168.1.2 port 110 protocol pop
   host 192.168.1.2 port 143 protocol imap
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetCalendarServer csadmind

 check calendar-admin with pidfile /usr/iplanet/SUNWics5/cal/bin/config/pidfile.admin
   start program  "/usr/iplanet/SUNWics5/cal/bin/csstart service admin"
   stop program  "/usr/iplanet/SUNWics5/cal/bin/csstop service admin"
   group calendar
   timeout(5, 5)
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetCalendarServer cshttpd

 check calendar-http with pidfile /usr/iplanet/SUNWics5/cal/bin/config/pidfile.http
   start program  "/usr/iplanet/SUNWics5/cal/bin/csstart service http"
   stop program  "/usr/iplanet/SUNWics5/cal/bin/csstop service http"
   group calendar
   timeout(5, 5)
   host 192.168.1.3 port 80 protocol http
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetCalendarServer csdwpd (database wire protocol)

 check calendar-dwp with pidfile /usr/iplanet/SUNWics5/cal/bin/config/pidfile.dwp
   start program  "/usr/iplanet/SUNWics5/cal/bin/csstart service dwp"
   stop program  "/usr/iplanet/SUNWics5/cal/bin/csstop service dwp"
   group calendar
   timeout(5, 5)
   host 192.168.1.3 port 9779 protocol dwp
   cpuusage > 2.0 for 5 cycles then restart   # There's a leak in csdwpd
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetCalendarServer csnotifyd

 check calendar-notify with pidfile /usr/iplanet/SUNWics5/cal/bin/config/pidfile.notify
   start program  "/usr/iplanet/SUNWics5/cal/bin/csstart service notify"
   stop program  "/usr/iplanet/SUNWics5/cal/bin/csstop service notify"
   group calendar
   timeout(5, 5)
   alert foo@bar
   alert 123456@sms on { timeout }

iPlanetCalendarServer enpd (event notification service broker)

 check calendar-ens with pidfile /usr/iplanet/SUNWics5/cal/bin/config/pidfile.ens
   start program  "/usr/iplanet/SUNWics5/cal/bin/csstart service ens"
   stop program  "/usr/iplanet/SUNWics5/cal/bin/csstop service ens"
   group calendar
   timeout(5, 5)
   host 192.168.1.3 port 7997
   alert foo@bar
   alert 123456@sms on { timeout }

Misc Services

Apcupsd (APC ups daemon)

 check apcupsd with pidfile /var/run/apcupsd.pid
   start program = "/etc/init.d/apcupsd start"
   stop  program = "/etc/init.d/apcupsd stop"
   timeout(5, 5)
   host 192.168.1.3 port 7000 type TCP 
   checksum /etc/init.d/apcupsd
   checksum /opt/apcupsd/sbin/apcupsd
   alert foo@bar
   alert 123456@sms on { timeout }

Webmin (remote admin service)

 check webmin with pidfile /var/webmin/miniserv.pid
   start program = "/etc/init.d/webmin start"
   stop  program = "/etc/init.d/webmin stop"
   host 192.168.1.3 port 10000
   checksum /etc/init.d/webmin
   timeout(5, 5)
   alert foo@bar
   alert 123456@sms on { timeout }