Monit is an open source utility that provides several system monitoring functionality that are extremely helpful to sysadmins. This article provides a jumpstart guide on monit installation and configuration. We also discuss a specific example related to processes monitoring.
1. Install monit
On Fedora, openSUSE, Debian install monit as a package from the distribution repository. For example, on Debian (and Ubuntu), install monit using apt-get as shown below.
# apt-get install monit
If your distribution don’t have the monit package, download monit source and install it.
2. Configure monit
A sample process monitoring entry in the monit configuration file /etc/monit/monitrc looks like the following.
check process PROCESSNAME with pidfile PIDFILENAME-WITHABSOLUTE-PATH start = STARTUP-SCRIPT stop = STOP-SCRIPT
For example, to monitor the cron daemon, append the following lines to the monitrc file.
# vim /etc/monit/monitrc check process crond with pidfile /var/run/crond.pid start = "/etc/init.d/cron start" stop = "/etc/init.d/cron stop"
For further configurations (for example, restarting a process when it crosses a memory or process limit), refer the HOW TO MONITOR section in “man monit”.
Also, enable syslog by uncommenting the following line in /etc/monit/monitrc.
# vim /etc/monit/monitrc set logfile syslog facility log_daemon
3. Allow startup of monit
Edit the /etc/default/monit file and enable the start up flag, which ensures that the configuration is done so that monit can start.
# vim /etc/default/monit startup=1
4. Start monit
# /etc/init.d/monit start Starting daemon monitor: monit
5. Check monit functionality
To test this, let us kill the running cron daemon as shown below.
# ps -ef | grep cron root 2886 1 0 10:18 ? 00:00:00 /usr/sbin/cron # pkill -9 cron
In the next interval, monit automatically starts the cron daemon without the administrator interaction as shown in the syslog messages below.
Dec 5 13:06:55 (none) monit: 'crond' process is not running Dec 5 13:06:55 (none) monit: 'crond' trying to restart Dec 5 13:06:55 (none) monit: 'crond' start: /etc/init.d/cron
Do a ps -ef to make sure the cron job is started automatically by monit, when you killed it.
# ps -ef | grep cron root 19728 1 0 13:06 ? 00:00:00 /usr/sbin/cron