Monit - Monitor Linux Daemon, Filesystem, CPU , Files and Network

September 26, 2014 | By
| 2 Replies More

Monit is a small linux utility designed to manage and monitor processes, programs, filesystems, directories and files. You can have it run automatic maintenance and repair and can execute meaningful causal actions in error situations. You can use Monit to monitor files, directories and filesystems for changes, such as timestamps changes, checksum changes or size changes. Monit logs to syslog or to its own log file and notifies you about error conditions via customizable alert messages. It can also perform various TCP/IP network checks, protocol checks and can utilize SSL for such checks.

Monit can be used via a web interface that you can access via your favorite web browser.

How to Install Monit

To install monit on Debian / Ubuntu distribution you can use apt-get like so:

# apt-get install monit

On Fedora you can use yum to install it from the repository:

# yum install monit

To install it on CentOS / RHEL you will have to use Dag Rpmforge and then install it with the same yum command.

Configuration File

Monit is configured and controlled via a control file called monitrc. The default location for this file is ~/.monitrc if unavailable it will use /etc/monit/monitrc. The execution script in /etc/init.d/monit will also use /etc/monit/monitrc. To protect the security of your control file and passwords the control file must have permissions no more than 0700; Monit will complain and exit otherwise.

Currently, eight types of check statements are supported:

CHECK PROCESS <unique name> <PIDFILE <path> | MATCHING <regex>>
<path> is the absolute path to the program's pidfile.

CHECK FILE <unique name> PATH <path>
<path> is the absolute path to the file.

CHECK FIFO <unique name> PATH <path>
<path> is the absolute path to the fifo.

CHECK FILESYSTEM <unique name> PATH <path>
<path> is the path to the filesystem block special device, mount point, file or a directory which is part of a filesystem.

CHECK DIRECTORY <unique name> PATH <path>
<path> is the absolute path to the directory.

CHECK HOST <unique name> ADDRESS <host address>
The host address can be specified as a hostname string or as an ip-address string on a dotted decimal format.

CHECK SYSTEM <unique name>
The system name is usually hostname, but any descriptive name can be used. This test allows one to check general system resources such as CPU usage (percent of time spent in user, system and wait), total memory usage or load average.

CHECK PROGRAM <unique name> PATH <executable file> [TIMEOUT <number> SECONDS]
<path> is the absolute path to the executable program or script. The status test allows one to check the program's exit status.

Using Monit web interface

Monit comes with an easy to use web interface you can access in your browser, to enable it you will have to add the following lines to your monitrc file:

set httpd port 2812
allow myuser:mypassword

Then you can use the IP of the server to access it, it should look like this:

monit

Examples : Monitor Daemon, Filesystem, CPU , Files and Network

1. To monitor a daemon you can add the following lines to your monitrc file:

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

2. To send an alert in case of high CPU usage you can use this in your monitrc file:

check process apache with pidfile /var/run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart

3. Restart in case of high memory usage:

check process apache with pidfile /var/run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
if totalmem > 200.0 MB for 5 cycles then restart

4. To check a filesystem:

check filesystem datafs with path /dev/sda1
start program = "/bin/mount /data"
stop program = "/bin/umount /data"

5. To check a directory:

check directory bin with path /bin
if failed permission 755 then alert

6. To check a host on the network

check host server2 with address 192.168.1.2
if failed icmp type echo count 3 with timeout 3 seconds then alert

All the services that Monit monitors will be included on the web interface and it will look like this:

monit services

Also if you click a service name you will get even more details about it:

monit details

Filed Under : LINUX HOWTO, MONITORING, OPEN SOURCE TOOLS

Free Linux Ebook to Download

Comments (2)

Trackback URL | Comments RSS Feed

  1. Neog J. says:

    Hello, how to config reboot if host fail instead of alert?

    i.e if ip address fails, reboot the network/ip address or reboot the server via monit.

Leave a Reply

Commenting Policy:
Promotion of your products ? Comment gets deleted.
All comments are subject to moderation.