Building home OpenBSD router – Part 6
December 6, 2008 6:07 pmStart at Part 1
The Multi Router Traffic Grapher (MRTG)
Reference: Tobi Oetiker’s MRTG – The Multi Router Traffic Grapher
To borrow a phrase from Tobi Oetiker, “You have a router, you want to know what it does all day long? Then MRTG is for you.” The goal here is to track the actions of the OpenBSD router over time. This practice is important for detecting trends in traffic, helpful for finding bottlenecks, and even identify a baseline to recognize abnormal changes in traffic.
So let’s get on with it. For this example, I use OpenBSD’s MRTG package. I’ll also install two packages required for IPv6, OpenBSD MRTG package requires them:
mschenck ~# sudo pkg_add http://mirror.rit.edu/pub/OpenBSD/4.3/packages/i386/mrtg-2.15.2p1.tgz mschenck ~# sudo pkg_add http://mirror.rit.edu/pub/OpenBSD/4.3/packages/i386/p5-Socket6-0.19.tgz mschenck ~# sudo pkg_add http://mirror.rit.edu/pub/OpenBSD/4.3/packages/i386/p5-IO-INET6-2.01p0.tgz
I should point out that you need an snmp daemon running for MRTG to pole stats from your router. The enable this first you must add the following to “/etc/rc.conf.local”:
snmpd_flags="" # for normal use: ""
This will enable snmpd to automatically start on reboot. In the meantime, lets start it ourself
mschenck ~# sudo /usr/sbin/snmpd
By default, OpenBSD’s snmp daemon (snmpd(8)) only listens on localhost and the default community string is “public“. You can change these settings by modifying ” /etc/snmpd.conf” (see snmpd.conf(5)), however for this example we’ll stick with these default settings.
Now lets get an http daemon running to display these graphs. OpenBSD come with Apache, lets enable and start it up. Add the following line to /etc/rc.conf.local:
httpd_flags="" # for normal use: "" (or "-DSSL" after reading ssl(8))
Again, lets avoid the reboot and just start the daemon manually:
mschenck ~# sudo /usr/sbin/httpd
Now, lets backup to original document root for apache and create a new one for displaying our mrtg graphs:
mschenck ~# sudo mv /var/www/htdocs /var/www/htdocs-orig mschenck ~# sudo mkdir -p /var/www/htdocs/cfg
So now that we have MRTG and, the perl modules it requires, and an snmp daemon running and an http daemon up to display our graphs; we’re ready to start configuring.
mschenck ~# sudo cfgmaker --global 'WorkDir: /var/www/htdocs' \
--global 'Options[_]: bits,growright' \
--output /var/www/htdocs/cfg/mrtg.cfg \
public@localhost
Now lets schedule the polling of our NICs’ stats for the mrtg graphs. I’m going to put the task to root’s crontab:
mschenck ~# sudo crontab -u root -e
And then add the following cron schedule:
*/5 * * * * /usr/local/bin/mrtg /var/www/htdocs/cfg/mrtg.cfg --logging /var/log/mrtg.log
Now, just watch the data start collecting.

