[mrtg] Clue, please, for (slightly) complex target (Niall O'Reilly)

Edwin A. Epstein III ed at rhinobee.com
Thu Nov 2 21:06:24 CET 2017

Hi Niall,

It does sound like you have a rather complex target. I too refer to most, if not all, of my interfaces by name with "\", but I usually convert everything to numeric OIDs. I'll just assume those work normally elsewhere. If I understand you correctly you want:
IN = IF3  |  OUT = IF2 + IF3

I double checked the literature and have some ideas as to what went wrong. 

  "Target[limes.no8.be_aggregate-dn]: ifHCInOctets.\ether3-uplink:public at limes.no8.be:::::2&ifHCInOctets.\ether2-uplink:public at limes.no8.be:::::2 
  + ifHCInOctets.\ether3-uplink:public at limes.no8.be:::::2"

You can't use the math operation here is my first guess. It's:

  IF-1-IN & IF-1-OUT +-/* MATH

It's not adding your two interfaces together for OUT, but would add it to both IN and OUT. That's assuming that it can understand to SNMP poll your OID for the value in the first place. Most likely it passed that to Perl directly, and Perl understandably barfed. Turn on debugging by calling MRTG differently in rc.d, or your cron job. Ours is custom:

  daemon_flags="--user _mrtg --group _mrtg --confcache-file /etc/mrtg/mrtg.ok --pid-file /var/run/mrtg.pid --logging /var/log/mrtg.log --debug=conf,base /etc/mrtg/mrtg.cfg"

The last part is what gets you the error output you are looking for. It will tell you during polling, and when it attempts to graph the target. My guess is that the math is performed during its graphing stage and not the polling stage. I often see errors related to the math in this stage when SNMP failed or returns null.  

This sounds like a job for a custom collector, which is easier than it sounds. Instead of defining OIDs and math, you define an external command called with arguments:

  Target[limes.no8.be_aggregate-dn]: `/usr/bin/perl /etc/mrtg/ipv6.uplink.relative.stats limes.no8.be_aggregate-dn'

Your perl script will snmpwalk your three OIDs, perform the required calculations, and then provide output to the MRTG script with values on seperate lines. Your output might look like 
  1:00PM  up 19 days, 19:34

That's my best guess as to what you can do to make it work.


Edwin A Epstein, III 
Rhinobee Internet Services 
707.237.7504 ext 209 
707.737.0288 Mobile

----- Original Message -----
From: "mrtg-request" <mrtg-request at lists.oetiker.ch>
To: "mrtg" <mrtg at lists.oetiker.ch>
Sent: Thursday, November 2, 2017 4:00:02 AM
Subject: mrtg Digest, Vol 123, Issue 1

Send mrtg mailing list submissions to
	mrtg at lists.oetiker.ch

To subscribe or unsubscribe via the World Wide Web, visit
or, via email, send a message with subject or body 'help' to
	mrtg-request at lists.oetiker.ch

You can reach the person managing the list at
	mrtg-owner at lists.oetiker.ch

When replying, please edit your Subject line so it is more specific
than "Re: Contents of mrtg digest..."

Today's Topics:

   1. Clue, please, for (slightly) complex target (Niall O'Reilly)


Message: 1
Date: Thu, 02 Nov 2017 00:30:21 +0000
From: "Niall O'Reilly" <niall.oreilly at ucd.ie>
To: mrtg at lists.oetiker.ch
Subject: [mrtg] Clue, please, for (slightly) complex target
Message-ID: <6AF1F4D2-0B6F-4E9F-BBE1-34920F44592C at ucd.ie>
Content-Type: text/plain; format=flowed


I have a box with two uplinks, one configured for IPv4 only, the other 
for IPv6 only.
I'ld like to show IPv6 traffic in relation to total.  The current 
version of my
target expression isn't what I need.  I'm seeing the log file with four 
zeroes in
each row, except for the expected '-1 -1' in the top one.

Because of the characteristics of the box, I have to refer to interfaces 
by description
rather than by name, so I'm using the '\' prefix.  This works for the 
targets generated
by cfgmaker, where the OID is implicit.

My ether3-uplink is the IPv6 one, and ether2-uplink carries IPv4.

I'm trying to plot IPv6 ("IN") traffic, aggregate IPv6 + IPv4 traffic 
("OUT") and the
relative percentage, with one target for inward traffic, another for 

Here are the relevant fragments of my configuration file for the inward 

LoadMIBs: /usr/local/share/snmp/mibs/IF-MIB.txt

ifHCInOctets.\ether3-uplink:public at limes.no8.be:::::2&ifHCInOctets.\ether2-uplink:public at limes.no8.be:::::2 
+ ifHCInOctets.\ether3-uplink:public at limes.no8.be:::::2

Options[limes.no8.be_aggregate-dn]: growright,bits,dorelpercent

Clue, please, anyone?

Thanks in anticipation.

Niall O'Reilly


Subject: Digest Footer

mrtg mailing list
mrtg at lists.oetiker.ch


End of mrtg Digest, Vol 123, Issue 1

More information about the mrtg mailing list