Articles Comments

{ Berbagi, Menulis, Dan Mengajar } Ilmu… » 7. Operating System » Installasi MRTG di Ubuntu

Installasi MRTG di Ubuntu

Networking → How to Install and Configure MRTG on Ubuntu Server

105 Comments

August 13th, 2009 by iceflatline

(2.28.10) – This post was amended to include minor editorial corrections — iceflatline

(6.11.12) – This post was amended to include procedures for adding multiple gateway\router URLs to a single mrtg.cfg file and minor editorial corrections — iceflatline

This post will describe how to install and configure Tobi Oetiker’s MRTG (Multi Router Traffic Grapher) on your Ubuntu home server. Once configured, you’ll be able to use it to monitor the traffic in and out of your home network using the SNMP capability in your network’s gateway\router. MRTG generates static HTML pages containing PNG images which provide a visual representation of this traffic. MRTG typically produces daily, weekly, monthly, and yearly graphs. MRTG is written in perl and works on Unix/Linux as well as Windows. MRTG is free software licensed under the GNU GPL.

Software versions used in this post were as follows:

  • Ubuntu Server v12.04 x64 LTS)
  • mrtg_2.17.3-2ubuntu1_amd64.deb

So, let’s get started.

Download and Install

First, download and install MRTG:

sudo apt-get install mrtg

If this is the first time installing MRTG on your server you’ll likely be presented with the following message. Answering “Yes” means that the default configuration file will be installed with permissions set at 640. Answering “No” means that the permissions are set at 644. In this example we’re going to accept the default Yes. No worries though, if you select No the steps in this tutorial will still work.

MRTG Message Concerning File Permissions

MRTG installs a sample configuration file /etc/mrtg.cfg used to hold the SNMP information obtained from your gateway\router. For a full listing of what MRTG installs and where, run the locate command:

sudo updatedb && locate mrtg

Technically speaking, mrtg.cfg could remain in /etc, but just to keep things tidy and to help facilitate the startup script that will be discussed later, let’s create a directory for it and move it into that directory:

sudo mkdir /etc/mrtg && sudo mv /etc/mrtg.cfg /etc/mrtg

That’s it for installing MRTG. Now let’s move on and configure it.

Configure

MRTG includes a script called cfgmaker that will help us populate /etc/mrtg/mrtg.cfg with the information obtained from your gateway\router. But before you run cfgmaker, you should setup the SNMP service in your gateway\router. This usually involves logging into your gateway\router and enabling SNMP. The default SNMP community name is typically “public.” If you change the SNMP community name to something else, make note of it. Now, run the following command, substituting your SNMP community name, if you’ve changed it, and adding the IP address of your gateway\router:

sudo cfgmaker --output=/etc/mrtg/mrtg.cfg public@your-router's-IP-address

If you would like to add more than one gateway\router to MRTG simply append the additional URL(s) to the same mrtg.cfg file. Then, when you build the web page using the indexmaker command described below, all the gateway\routers (and their associated graphs) will be displayed on the same HTML page.

1 sudo cfgmaker --output /etc/mrtg/mrtg.cfg public@the-first-router's-IP-address public@the-second-router's-IP-address

Next, open /etc/mrtg/mrtg.cfg in a text editor and make sure under Global Configuration Options that the lines “WorkDir: /var/www/mrtg” (under Debian), and “Options[_]: growright, bits” (under Global Defaults) are uncommented. Finally, add the following lines under the Global Defaults section:

RunAsDaemon: Yes
Interval: 5
Logdir: /var/log/
EnableIPv6: no

What does all this do? The line RunAsDaemon: Yes will enable MRTG to…um… run as a daemon. This is beneficial because MRTG is launched only once, thus the parsing of the /etc/mrtg/mrtg.cfg file is done only once, not repeatedly as would be the case if one were to run MRTG as a cron task – another acceptable method for running MRTG. Also, when running as a daemon, MRTG itself is responsible for timing the measurement intervals; therefore, we need to add the Interval line option and assign it a value – in this example 5. This means that every five minutes MRTG will poll the SNMP service in your gateway\router and update its graphs. We’ve also provided MRTG a directory to place its log file using the Logdir option, and finally, because many gateway\routers do not currently support SNMP over IPv6, we’ve shut that option off using the line EnableIPv6: no.

Speaking of graphs, by default MRTG graphs grow to the left, so by adding the option “growright” the direction of the traffic visible in MRTG’s graphs flips causing the current time to be at the right edge of the graph and the history values to the left. We’ve also chosen the “bits” option, which means that the monitored traffic values obtained from your gateway\router are multiplied by 8 and displayed bits per second instead of bytes per second.

Okay, now it’s time to create the web pages which display the MRTG graphs using the indexmaker command. Run the following commands:

sudo mkdir /var/www/mrtg
sudo indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

MRTG has been configured. Let’s start it up and see what it displays.

Start

There’s something important to keep in mind when starting MRTG, and that is that MRTG requires the environmental variable “LANG” to be C in order to run properly. Since most Linux systems these days, including Ubuntu server, use UTF-8 (run echo $LANG to see what your system uses), let’s change LANG to C and start MRTG using the following command:

sudo env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg

When you run MRTG for the first time you may see a lot of complaints about missing log files. No worries, this is normal for the first 2-3 times you start MRTG this way. If, however, it continues to complain you may want to look into the source of the problem.

Well, that’s it. Now point your browser to http://your-server-address/mrtg and you should see a page that resembles the following. You may have more or less graphs depending on the number of interfaces reported by your gateway\router(s).

Screenshot of default MRTG index page

Because of the aforementioned options added to /etc/mrtg/mrtg.cfg, you’ll see the graph starting “grow” to the right as the traffic is monitored over time, and the Y axis displayed as bits per second. If you click on any one of these graphs you’ll be taken to another page showing individual graphs for daily, weekly, monthly, and yearly traffic averages, along with the maximum, average, and current bit rate in and out of that particular interface. Only interested in displaying one particular interface? Don’t like the look of the page? No worries, just edit /etc/mrtg/mrtg.cfg and/or /var/www/mrtg/index.html until you get pages looking the way you want.

Okay, so now that we have MRTG installed, configured and running let’s move on and discuss how to keep it running.

Operate

Starting MRTG by hand is not ideal in the long run. So perhaps after you’ve done some tweaking on MRTG and are satisfied with the results, you can automate the process of running MRTG by using a startup script in your system startup sequence. Here’s the script that I use:

1 #! /bin/sh
2 ### BEGIN INIT INFO
3 # Provides:          mrtg
4 # Required-Start:   
5 # Required-Stop:    
6 # Default-Start:     2 3 4 5
7 # Default-Stop:      0 1 6
8 # Short-Description: mrtg init script
9 # Description:       This file is used to start, stop, restart,
10 #                    and determined status of the mrtg daemon.
11 # Author:            iceflatline <iceflatline@gmail.com>
12 ### END INIT INFO
13
14 ### START OF SCRIPT
15 set -e
16 # PATH should only include /usr/* if it runs after the mountnfs.sh script
17 PATH=/sbin:/usr/sbin:/bin:/usr/bin
18 DESC="mrtg"
19 NAME=mrtg
20 DAEMON=/usr/bin/$NAME
21 DAEMON_ARGS="/etc/mrtg/mrtg.cfg"
22 PIDFILE=/etc/mrtg/$NAME.pid
23 SCRIPTNAME=/etc/init.d/$NAME
24
25 # Exit if the mrtg package is not installed
26 [ -x "$DAEMON" ] || exit 0
27
28 # Load the VERBOSE setting and other rcS variables
29 . /lib/init/vars.sh
30
31 # Define LSB log_* functions.
32 # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
33 . /lib/lsb/init-functions
34
35 # Function that starts the mrtg daemon
36 start()
37 {
38     env LANG=C start-stop-daemon --start --quiet \
39     --exec $DAEMON -- $DAEMON_ARGS
40 }
41
42 # Function that stops the mrtg daemon
43 stop()
44 {
45     start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
46     --pidfile $PIDFILE
47 }
48
49 case "$1" in
50   start)
51     log_daemon_msg "Starting $DESC"
52     start
53     case "$?" in
54         0) log_end_msg 0 ;;
55         1) log_end_msg 1 ;;
56     esac
57     ;;
58   stop)
59     log_daemon_msg "Stopping $DESC"
60     stop
61     case "$?" in
62         0) log_end_msg 0 ;;
63         1) log_end_msg 1 ;;
64     esac
65     ;;
66   restart|force-reload)
67     log_daemon_msg "Restarting $DESC"
68     stop
69     case "$?" in
70       0|1)
71         start
72         case "$?" in
73             0) log_end_msg 0 ;;
74             1) log_end_msg 1 ;;
75         esac
76         ;;
77     esac
78     ;;
79     status)
80     status_of_proc "$DAEMON" "$NAME"
81     ;;
82   *)
83     echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}"
84     ;;
85 esac
86 exit 0
87 ### END OF SCRIPT

To use the script, save it to your home directory as mrtg and make it executable. Then move or copy it to /etc/init.d:

cd ~
chmod +x mrtg
sudo mv mrtg /etc/init.d/

Now, link the mrtg script to all of Ubuntu server’s multi-user run levels (2-5):

sudo update-rc.d mrtg defaults

Now, let’s start MRTG using our script. If it’s currently running then substitute restart for start in the following command:

sudo /etc/init.d/mrtg start

That’s it. Now if for some reason your server is rebooted, MRTG should fire up automatically (to remove the link from the server’s multi-user run levels, use the command sudo update-rc.d -f mrtg remove).

Conclusion

This concludes the post on how to install and configure MRTG on Ubuntu server. As you can see, MRTG isn’t terribly complicated and proves to be a really nice open source package for monitoring and displaying traffic in and out your home network from virtually anywhere you have a web browser. For a full list of all the configuration options and other information I encourage you to visit the MRTG web site.

References

http://oss.oetiker.ch/mrtg/doc/index.en.html

Tags: , , ,

Filed under: 7. Operating System

Leave a Reply

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>