// Tutorial //

How To Install and Configure Monit

Published on August 31, 2012
Default avatar
By Etel Sverdlov
Developer and author at DigitalOcean.
How To Install and Configure Monit

About Monit

Monit is a helpful program that automatically monitors and manages server programs to ensure that they not only stay online consistently, but that the file size, checksum, or permissions are always correct. Additionally monit comes with a basic web interface through which all of the processes can be set up. This tutorial will cover the most basic setup and configuration.

Install Monit

Monit is easiest to install through apt-get:

sudo apt-get install monit

Once monit downloads, you can add programs and processes to the configuration file:

sudo nano /etc/monit/monitrc

Monit can be started up with a command that then keeps it running in the background

monit

Typing monit status displays monit’s details:

The Monit daemon 5.3.2 uptime: 1h 25m 

System 'myhost.mydomain.tld'
  status                            Running
  monitoring status                 Monitored
  load average                      [0.03] [0.14] [0.20]
  cpu                               3.5%us 5.9%sy 0.0%wa
  memory usage                      26100 kB [10.4%]
  swap usage                        0 kB [0.0%]
  data collected                    Thu, 30 Aug 2012 18:35:00

Configure Monit

Monit is very easy to use nearly out of the box. By default, it is set up to check that services are running every 2 minutes and stores its log file in “/var/log/monit.log”.

These settings can be altered at the beginning of the configuration file in the set daemon and set logfile lines respectively.

Web Service

Monit comes with it’s own web server running on port 2812. To configure the web interface, find and uncomment the section that begins with set httpd port 2812. Once the section is uncommented, write in your server’s IP or domain name as the address, allow anyone to connect, and then create a monit user and password

set httpd port 2812
    use address 12.34.56.789  # only accept connection from localhost
    allow 0.0.0.0/0.0.0.0        # allow localhost to connect to the server and
    allow admin:monit      # require user 'admin' with password 'monit'

Once this is configured, monit should reload and reread the configuration file, and the web interface will be available:

monit reload

You will then be able to access the monit web interface by going to “example.com:2812”

Login with your chosen username and password. Your screen should look something like this.

Configuring Programs Self-Monitoring

Once the web services are set up, you can begin to input the programs that you want monitored and protected into the "/etc/monit/monitrc" configuration file. To simply ensure that programs stay online, you can use the /etc/init.d commands to stop or start a program.

Here are some example configurations:

Apache:

check process apache with pidfile /run/apache2.pid
    start program = "/etc/init.d/apache2 start" with timeout 60 seconds
    stop program  = "/etc/init.d/apache2 stop"

MySQL

check process mysqld with pidfile /var/run/mysqld/mysqld.pid
    start program = "/etc/init.d/mysql start"
    stop program = "/etc/init.d/mysql stop"

Nginx

check process nginx with pidfile /var/run/nginx.pid
    start program = "/etc/init.d/nginx start"
    stop program = "/etc/init.d/nginx stop"

Finish Up

Once you have configured all of the programs that you want to run, they will be automatically tracked and restarted should they turn off.

You can control the programs through both the web interface or the command line.

Once you have set up the configuration, check the syntax:

monit -t

After resolving any possible syntax errors, you can start running all of the monitored programs.

monit start all
By Etel Sverdlov

If you’ve enjoyed this tutorial and our broader community, consider checking out our DigitalOcean products which can also help you achieve your development goals.

Learn more here


About the authors
Default avatar
Developer and author at DigitalOcean.

Still looking for an answer?

Was this helpful?
10 Comments

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

There’s a typo in the apache config:

check process apache with pidfile /run/apache2.pid

should be

check process apache with pidfile /var/run/apache2/apache2.pid

macrus.hann6: after your make changes to the config file, don’t forget to run $ monit reload. Also make sure the actual pid files exist at that location.

sorry to answer my own question but in order to get rid of that error message & see monit’s status, I had to enable the httpd section in /et/monit/monitrc even though I wasn’t using the web interface (apparently you have to set the monit httpd process to allow connections from localhost).

Hope this helps someone else late at night while searching Google (it’s 02:42 in London ;-)

Hi.

I installed monit as above on 12.04 & it’s running but I get this (names changed to protect the innocent):

`$ ps aux | grep monit root 1193 0.0 0.0 5492 832 ? S Sep12 1:27 /usr/bin/monit -c /etc/monit/monitrc fubar 12127 0.0 0.0 4372 812 pts/1 S+ 02:05 0:00 grep --color=auto monit

$ sudo monit status [sudo] password for fubar: monit: error connecting to the monit daemon`

I’ve checked /etc/monit/monitrc & it looks good enough to get things going & as seen above I think it’s running…

Any help appreciated

I have installed Monit on Ubuntu server and that works fine. Now i want to install Monit on another Ubuntu server but that status also required to Show on same web interface (like nagios). Is Monit support on multiple servers? How can i configure ?

Let’s Tweak Your Online Business with the Best Press Release Distribution Service

http://shgseo.com/press-release-service/

I’m trying to configure monit to alert if the filesystem use is above a certain percentage. As per the docs it says to use the following:

check filesystem <unique name> path <path>
    if SPACE usage > 80% then alert

Can someone please let me know what I use for <unique name> and <path>. Ive tried many things for example:

check filesystem rootfs path /

But everytime i run sudo monit start all, I get the error There is no service named "rootfs"

I am on Ubuntu 16.04

Thanks for your help

Should this:

use address 12.34.56.789  # only accept connection from localhost

be this:

use address 127.0.0.1  # only accept connection from localhost

?

How to make sure that monit process automatically restarts after system restart on Ubuntu 14.0.4

I’ve following this article but I’m getting an “Execution failed” in apache too, whats the correct command line to put in monit config? apache2? thanks!