Centos Install and Configure MRTG

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

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:

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 22 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat cp mkdir tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
22 comments… add one
  • Aaron Jul 30, 2009 @ 13:06

    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.

  • M. Sanaullah Oct 1, 2009 @ 9:33

    nice one.

  • Dimitris May 10, 2010 @ 17:38

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

  • Adnan Mubeen Jun 10, 2010 @ 13:50

    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

  • Greg Sep 15, 2010 @ 2:32

    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

    • oat Jun 21, 2011 @ 21:59

      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.

  • Jonno Aug 1, 2011 @ 6:35

    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:
    syslocation LOCATION, COUNTRY
    syscontact NAME 

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

    Hope this helps

    • paresh bhide Oct 25, 2012 @ 14:09

      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

  • TnToast May 31, 2012 @ 16:53

    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)

  • 🐧 nixCraft May 31, 2012 @ 18:39


    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
  • TnToast May 31, 2012 @ 18:47

    Thanks Vivek Gite for helping a linux nuub

  • Animesh Kumar Jul 13, 2012 @ 11:57

    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.


  • Animesh Kumar Jul 13, 2012 @ 12:00

    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.


  • Stefan Pienaar Jul 25, 2012 @ 13:15

    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

  • rith Feb 5, 2013 @ 4:26

    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.

  • mani Jul 23, 2013 @ 4:21

    Hi Rith,

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

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

  • Rocketsingh Feb 4, 2014 @ 11:54
    [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.

    • Rocketsingh Feb 7, 2014 @ 6:53

      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….

  • DaveP May 14, 2014 @ 21:59

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

  • Ronan Jun 25, 2014 @ 5:54

    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.

  • Crane Jun 27, 2015 @ 3:51

    Hi all.
    When i’m working step 4
    I get the error “cat: /etc/cron.d/mrtg: No such file or directory”
    can somebody help me please?

  • Erwin Feb 26, 2016 @ 7:52

    Hi All,

    Is there any function to change the name “Bytes Per Second” in graph created to any name like “BPS” .


Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum