Centos Install and Configure MRTG

by on July 30, 2009 · 20 comments· LAST UPDATED March 18, 2011

in , ,

How do I install and configure MRTG under Fedora Linux or CentOS Linux v5.x server to monitor the traffic load on network-links including routers?

The Multi Router Traffic Grapher (MRTG) is a tool to monitor the traffic load on network-links.

MRTG generates HTML pages containing PNG images which provide a LIVE visual representation of this traffic. You need the following packages:

  • mrtg : Multi Router Traffic Grapher
  • net-snmp and net-snmp-utils : SNMP (Simple Network Management Protocol) is a protocol used for network management. The NET-SNMP project includes various SNMP tools. net-snmp package contains the snmpd and snmptrapd daemons, documentation, etc. You also want to install the net-snmp-utils package, which contains NET-SNMP utilities.

This FAQ works with RHEL / CentOS and Fedora Linux.

Step # 1: Install MRTG

Type the following command to install packages using yum command under CentOS / Fedora Linux:
# yum install mrtg net-snmp net-snmp-utils

Step # 2: Configure snmpd

If you need to monitor localhost including interface and other stuff such as CPU, memory etc, configure snmpd. Open /etc/snmp/snmpd.conf, enter:
# vi /etc/snmp/snmpd.conf
Update it as follows to only allow access from localhost:

com2sec local     localhost           public
group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
view all    included  .1                               80
access MyRWGroup ""      any       noauth    exact  all    all    none
syslocation VSNL, India
syscontact Root <vivek@nixcraft.tld>

Save and close the file. Restart snmpd:
# chkconfig snmpd on
# service snmpd restart

Make sure you see interface IP, by running the following command:
# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
Sample Outputs:

IP-MIB::ipAdEntIfIndex.123.xx.yy.zzz = INTEGER: 2
IP-MIB::ipAdEntIfIndex. = INTEGER: 1

Step # 3: Configure MRTG

Use cfgmaker command to creates /etc/mrtg/mrtg.cfg file, enter:
# cfgmaker --global 'WorkDir: /var/www/mrtg' --output /etc/mrtg/mrtg.cfg public@localhost

  • --global 'WorkDir: /var/www/mrtg' : add global config entries i.e. set workdir to store MRTG graphs.
  • --output /etc/mrtg/mrtg.cfg: configr output filename
  • public@localhost : public is the community name of the device you want to create a configuration for. If you are using the wrong community name you will get no response from the device. localhost is the DNS name or the IP number of an SNMP-managable device i.e. our local server.

Finally, run indexmaker to create web pages which display the status of an array of mrtg interface status pages:
# indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

Step # 4: Verify Cron Job

/etc/cron.d/mrtg runs mrtg command to monitor the traffic load on network links:
# cat /etc/cron.d/mrtg
Sample Output:

*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

Just make sure crond is running and you are done with configuration:
# chkconfig --list crond
If it is off in run level # 3, just run the following to turn on crond service:
# chkconfig crond on
# service crond on

How do I view mrtg graphs?

You need Apache web server to view graphs, simply type the following to install httpd:
# yum install httpd
# chkconfig httpd on
# service httpd on

Fire a webbrowser and type the url:

Fig.01:Sample MRTG Graph

Fig.01:Sample MRTG Graph

How Do I Create MRTG For My Router at

Run cfgmaker as follows (there is no need to configure snmp for router, as most router and switches comes pre configured with their own SNMPD):
# cfgmaker --global 'WorkDir: /var/www/mrtg' --output /etc/mrtg/mrtg.cfg public@router
# cfgmaker --global 'WorkDir: /var/www/mrtg' --output /etc/mrtg/mrtg.cfg public@

How Do I Password Protect My Graphs?

Read this FAQ: Set Apache Password Protected Directories With .htaccess File.

See Also:

Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 20 comments… read them below or add one }

1 Aaron July 30, 2009 at 1:06 pm

Good tutorial. Very thorough.

The tool MRTG is great, but I’ve come to love Cacti (http://cacti.net/). It has a web-based interface for managing graphs and a very slick graphical presentation.


2 M. Sanaullah October 1, 2009 at 9:33 am

nice one.


3 Dimitris May 10, 2010 at 5:38 pm

Very nice tutorial and the result is a working MRTG !
Thank you very much


4 Adnan Mubeen June 10, 2010 at 1:50 pm

Hi there,
I install Centos 5.5 , I have got one problem here during configuration mrtg please help me , after i run this command
# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
output is nothing …
and then
when i run this
# indexmaker –output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg
it is giving me error
Use of uninitialized value in hash element at /usr/bin/indexmaker line 352.

can some body help me please .

Best Regards
Adnan Mubeen


5 Greg September 15, 2010 at 2:32 am

Make sure you have this line.
access MyRWGroup “” any noauth exact all all none

The snmpwalk must work before anything else will work.

Re Greg


6 oat June 21, 2011 at 9:59 pm

Hi all,
I am having same issue. Use of uninitialized value in hash element at /usr/bin/indexmaker line 352. snmpd has no output. This is not my first time of configuring mrtg. This seems strange. I am also running snmp version This is the third Centos I am trying today. same error.


7 Jonno August 1, 2011 at 6:35 am

Hi all, for my install of mrtg on centos 5.5 i used the following config for snmpd :

# First, map the community name "public" into a "security name"
#       sec.name        source          community
com2sec notConfigUser   default         public
# Second, map the security name into a group name:
#       groupName       securityModel   securityName
group   notConfigGroup  v1              notConfigUser
group   notConfigGroup  v2c             notConfigUser
# Third, create a view for us to let the group have rights to:
# Open up the whole tree for ro, make the RFC 1213 required ones rw.
#       name            incl/excl       subtree mask(optional)
view    roview          included        .1
view    rwview          included        system.sysContact
view    rwview          included        system.sysName
view    rwview          included        system.sysLocation
view    rwview          included        interfaces.ifTable.ifEntry.ifAdminStatus
view    rwview          included        at.atTable.atEntry.atPhysAddress
view    rwview          included        at.atTable.atEntry.atNetAddress
view    rwview          included        ip.ipForwarding
view    rwview          included        ip.ipDefaultTTL
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteDest
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteIfIndex
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteMetric1
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteMetric2
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteMetric3
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteMetric4
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteType
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteAge
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteMask
view    rwview          included        ip.ipRouteTable.ipRouteEntry.ipRouteMetric5
view    rwview          included        ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaIfIndex
view    rwview          included        ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaPhysAddress
view    rwview          included        ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaNetAddress
view    rwview          included        ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaType
view    rwview          included        tcp.tcpConnTable.tcpConnEntry.tcpConnState
view    rwview          included        egp.egpNeighTable.egpNeighEntry.egpNeighEventTrigger
view    rwview          included        snmp.snmpEnableAuthenTraps
# Finally, grant the group read-only access to the systemview view.
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  roview rwview none
# System contact information
# It is also possible to set the sysContact and sysLocation system
# variables through the snmpd.conf file:
syscontact NAME

and then the standard config as followed on this page for mrtg.

Hope this helps


8 paresh bhide October 25, 2012 at 2:09 pm

I have followed all the steps above, done the checks along the way and when I got to the webpage I get Forbidden
You don’t have permission to access /mrtg on this server.
Apache/2.2.3 (CentOS) Server at (removed for security purposes)

also changed permission (chmod 0555) but not work. it give me some error


9 TnToast May 31, 2012 at 4:53 pm

I have followed all the steps above, done the checks along the way and when I got to the webpage I get Forbidden
You don’t have permission to access /mrtg on this server.
Apache/2.2.3 (CentOS) Server at (removed for security purposes)


10 nixCraft May 31, 2012 at 6:39 pm


You need to set correct permission on mrtg folder so that web server user can read the files:

chmod 0555 /path/to/your/mrtg/directory


11 TnToast May 31, 2012 at 6:47 pm

Thanks Vivek Gite for helping a linux nuub


12 Animesh Kumar July 13, 2012 at 11:57 am

I am trying to configure MRTG on CentOS. I have followed the same steps. When I try to run “indexmaker –output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg”, I get the error message “use of uninitialized value in hash element at usr bin indexmaker line 352″. How can I resolve this?

Any help will be appreciated.



13 Animesh Kumar July 13, 2012 at 12:00 pm

Also, I am getting the MRTG Index Page but it is not displaying any graph. I am guessing that the issue may be because of the error that I have posted in the previous comment.



14 Stefan Pienaar July 25, 2012 at 1:15 pm

I followed everything and it work’s beautiful. But how do I add another graph. As soon as I run
# cfgmaker –global ‘WorkDir: /var/www/mrtg’ –output /etc/mrtg/mrtg.cfg public@ it chance the localhost config to the switch.

If i make it # cfgmaker –global ‘WorkDir: /var/www/mrtg’ –output /etc/mrtg/mrtg1.cfg public@
It creates a new cfg but no second graph


15 rith February 5, 2013 at 4:26 am

Dear all of replyer, After i configured in mrtg, i’m getting only MRTG Index Page. How can i view graph? Thank for your replying.


16 mani July 23, 2013 at 4:21 am

Hi Rith,

U have to create html file and named should be index.html

perl indexmaker output e:\\index.html –compact e :\\.cfg


17 Rocketsingh February 4, 2014 at 11:54 am
[root@nagios Pix]# cfgmaker --global 'WorkDir: /var/www/mrtg/Pix' --output /etc/mrtg/mrtg.cfg spinepal@
[root@nagios Pix]# indexmaker --output=/var/www/mrtg/Pix/index.html /etc/mrtg/mrtg.cfg
[root@nagios Pix]# cfgmaker --global 'WorkDir: /var/www/mrtg/cisco' --output /etc/mrtg/mrtg1.cfg spinepal@
[root@nagios Pix]# indexmaker --output=/var/www/mrtg/cisco/index.html /etc/mrtg/mrtg1.cfg

i want to create more then two graph is given code is correct ??
Please help to solve the issue.


18 Rocketsingh February 7, 2014 at 6:53 am

i got the issue and problem resolved.

but another problem is accrued that is Graphs is not showing correct.
while i checking in interface and graph both data is not matching.
can any one can help me regarding this….


19 DaveP May 14, 2014 at 9:59 pm

Great work! thanks 10x It had been years since I had touched a Linux and or MRTG. -smiles


20 Ronan June 25, 2014 at 5:54 am

Hi friend i have two centos box, and both display this error can you help me?

when i run the indexmaker –output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

return is:

Use of uninitialized value $first in hash element at /usr/bin/indexmaker line 353.


Leave a Comment

Tagged as: , , , , , , , , , , , , , , , , , ,

Previous Faq:

Next Faq: