Monitoring Unix/Linux disk usage with MRTG
MRTG was initially designed to monitor network traffic (hence the name Multi Router Traffic Grapher) – but it is so extensible it can be used to monitor nearly anything!
Here I show how to use mrtg to monitor disk usage on a Unix/Linux box with the df command.
The quick way
I assume you have mrtg installed with the config files in /etc/mrtg
cd /etc/mrtg
wget <http://www.ianrogers.net/downloads/df-mrtg.tgz>
tar xvfz df-mrtg.tgz
rm df-mrtg.tgz
Edit /etc/mrtg/df.cfg
and change the WorkDir
line to an appropriate directory within your website.
You’ll have to create the directory as mrtg won’t do it for you!
Then edit /etc/crontab
to include the line
0-59/5 * * * * root /usr/local/mrtg-2/bin/mrtg /etc/mrtg/df.cfg
Wait for two 5 minute cycles to pass. Cron will send two warning messages to the root user containing lines like:
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for df-root
Rateup WARNING: /home/local/mrtg-2/bin/rateup Can't remove df-root.old updating log file
etc. one each for the first two cycles, and then everything should be fine.
Configuration
The tar file contains only two files:
-rwxr--r-- 1 root root 659 May 7 13:58 df-mrtg
-rw-r--r-- 1 root root 3561 Jun 18 12:41 df.cfg
df.cfg controls the mrtg output
df-mrtg takes one argument: a directory in a disk partition, reads the df info and formats it for mrtg. It reads the disk usage in 1k blocks as mrtg seems to use 32 bit integers internally – i.e. it can’t deal with big enough numbers if you try to report gigabyte disks in bytes!
If you want one of the partitions to be displayed as the default page then edit df.cfg. For example,
to display the /home
partition by default change the 9 occurrences of df-home in df.cfg to index
This has been tested on a Sun Cobalt RaQ3, but should work well with only minor changes, if any, on other Unix systems.