Monit is a free open source utility for managing and monitoring, processes, programs, files, directories and filesystems on a UNIX system. Monit conducts automatic maintenance and repair and can execute meaningful casual actions in error situations. CITATION
Installation
To install monit in to your Debian server, Simply use apt-get:
[server1]# apt-get install monit
Once installed you’ll find the main configuration file located at /etc/monit/monitrc.
Below is my sample configuration file, which will also explain some keywords.
set daemon 120 # poll at 2-minute intervals. Monit will wakeup every two minute to # monitor things. Time must be given in seconds. set logfile syslog facility log_daemon # Set syslog logging. # Set a default mail from-address for all alert messages emitted by monit. # All alert mail will be sent to below mail address. set mail-format { from: server1@thesysad.com } set alert root@thesysad.com # You can define your mail-notification format. Do man monit mail-format { from: server1@thesysad.com subject: $SERVICE $EVENT at $DATE message: Monit $ACTION $SERVICE at $DATE on $HOST, Yours sincerely, theSysad Admin } # Make monit start its web-server. So you can acccess it from webrowser. set httpd port 2812 and use address test.com ##Monit web-server ACL. allow localhost # allow localhost to connect to the server and allow 172.20.10.217 # allow 172.20.10.217 to connect to the server, # You can give only one per entry allow admin:monit # user name and password for authentication. allow server1:server1 # set multiple user to access through browser. # Monitoring the apache2 web services. # It will check process apache2 with given pid file. # If process name or pidfile path is wrong then monit will # give the error of failed. tough apache2 is running. check process apache2 with pidfile /var/run/apache2.pid #Below is actions taken by monit when service got stuck. start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" # Admin will notify by mail if below of the condition satisfied. if cpu is greater than 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 200.0 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout group server #Monitoring slapd process. check process slapd with pidfile /var/ldap/var/run/slapd.pid start program = "/etc/init.d/slapd start" stop program = "/etc/init.d/slapd stop" if failed port 389 then restart if 2 restarts within 3 cycles then timeout group server # monit will only monit/give alert in this mode. mode passive # Check Database file, size,permission etc... check file slapd-database with path /var/ldap/var/openldap-data/mydata.db if failed permission 700 then alert if failed uid data then alert if failed gid data then alert if timestamp > 15 minutes then alert if size > 100 MB then alert #Check directory for permission. check directory bin with path /bin if failed permission 755 then unmonitor if failed uid 0 then unmonitor if failed gid 0 then unmonitor #Check host for which services up/down on particular port. check host test.com with address 192.168.1.9 if failed icmp type echo with timeout 4 seconds then alert if failed port 21 then alert if failed port 22 type tcp 22 with timeout 40 seconds then aler if failed port 80 protocol http then alert if failed port 389 type tcp with timeout 15 seconds then alert
You can also include other configuration files via include directives:
include /etc/monit/default.monitrc include /etc/monit/mysql.monitrc
After modifying the configuration file you should check for the syntax to make sure they are correct. To do this run:
[server1]# monit -t
Now you can run monit directly:
[server1]# monit
Once monit is running you can check for activity with your web-browser.
You can of course use the Debian init script to start the monitoring:
[server1]# /etc/init.d/monit start
For this to work you must enable the service by changing the file /etc/default/monit:
# You must set this variable to for monit to start startup=1 # To change the intervals which monit should run uncomment # and change this variable. # CHECK_INTERVALS=180
var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-37138722-1']); _gaq.push(['_trackPageview']);
(function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();