[mrtg] Re: hrSystemUptime

Jerry Heidtke jheidtke at fmlh.edu
Wed Feb 19 16:35:25 MET 2003


Nothing in the host mib uses 64 bit counters. The host mib is an SMIv1 mib,
which doesn't include any 64 bit objects whatsoever. Where did you get this
idea?

In any case, hrSystemUptime is not a counter. It is a timeticks value. This
object type is defined as

TimeTicks ::=
    [APPLICATION 3]
        IMPLICIT INTEGER (0..4294967295)

No 64 bits there.

Jerry

-----Original Message-----
From: James Overbeck [mailto:grendel at gmo.jp] 
Sent: Wednesday, February 19, 2003 4:54 AM
To: Brett Marler
Cc: Antoine Jacoutot; mrtg at list.ee.ethz.ch
Subject: [mrtg] Re: hrSystemUptime



Hello,
	I believe the point of this exercise is to avoid sysUpTime looping
like the
odometer on an old car every (((2**32 / 100) / 60) / 60) / 24 = 497 days.
sysUpTime does that because it is limited to a 32 bit counter. I've seen it
happen many a time on access servers and routers that no one has touched for
a long time. Anything beginning with hr usually uses SNMPv2 and a 64 bit
counter, so hrSystemUptime would loop roughly every ((((2**64 / 100) / 60) /
60) / 24) / 365.25 = 5845420460 years.
	The answer would be to hack the mrtg perl executable so it can take
an OID
as part of the RouterUptime option, then mail Tobias and ask him nicely to
include your modification in the next release. :D
	In version 2.9.26b, this is the piece of code you need to change:

if (defined $$rcfg{routeruptime}{$rou}) {
  ($uptime,$name) = snmpget($$rcfg{routeruptime}{$rou}, $$cfg{snmpoptions},
             'sysUptime',
             'sysName'); #" <- this makes emacs parsing happy
}

		According to
http://people.ee.ethz.ch/~oetiker/webtools/mrtg/reference.html , the
RouterUptime target option allows you to specify a community at hostname for
fetching uptime, but it doesn't seem to allow you to specify an OID.
	The following would allow you to do so, as long as you don't have an
@ mark
in your community and you use a numerical OID. So it's not perfect. ^^;

if (defined $$rcfg{routeruptime}{$rou}) {
  if ($$rcfg{routeruptime}{$rou} =~ /^([\d\.]+)\:([^\@]+)\@(.+)$/) {
    my($oid,$community,$host) = ($1,$2,$3);
    ($uptime,$name) = snmpget($community.'@'.$host,
             $$cfg{snmpoptions},
             $oid,
             'sysName'); #" <- this makes emacs parsing happy
  } else {
    ($uptime,$name) = snmpget($$rcfg{routeruptime}{$rou},
             $$cfg{snmpoptions},
             'sysUptime',
             'sysName'); #" <- this makes emacs parsing happy
  }
}

	With that change, you can specify RouterUptime something like this:

RouterUptime[localhost]: 1.3.6.1.2.1.25.1.1.0:public at localhost:::::2

HopeThatHelps,
James


Brett Marler wrote:
> Hello Antoine,
> 
> 
>>On a console, if I go:
>># snmpget -v 2c -c public localhost host.hrSystem.hrSystemUptime.0
> 
> (snip)
> 
>>HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (105259891) 12 days,
>>4:23:18.91
>>
>>But I have no idea how to tell mrtg to use this.
> 
> 
> I get the "uptime" of my Windows XP box by simply running a small script
from 
> my Linux box which simply does an snmpwalk, searches for the sysuptime,
strips 
> the "days" off and puts it into a format which MRTG can then make a graph 
> from. Script is below if you would like it, just a no brainer shell
script!
> 
> --
> #!/bin/sh
> uptime=`/usr/local/bin/snmpwalk -v1 -c private 172.16.0.1 | /bin/grep -i 
> sysuptime | awk '{print $5}' | sed 's/days//'`
> echo "$uptime";
> --
> 
> Hope this is of some help.
> 
> 
> Regards.


--
Unsubscribe mailto:mrtg-request at list.ee.ethz.ch?subject=unsubscribe
Archive     http://www.ee.ethz.ch/~slist/mrtg
FAQ         http://faq.mrtg.org    Homepage     http://www.mrtg.org
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi


Confidentiality Notice: This e-mail message, including any attachments, is 
for the sole use of the intended recipient(s) and may contain confidential 
and privileged information.  Any unauthorized review, use, disclosure or 
distribution is prohibited.  If you are not the intended recipient, please 
contact the sender by reply e-mail and destroy all copies of the original 
message.


--
Unsubscribe mailto:mrtg-request at list.ee.ethz.ch?subject=unsubscribe
Archive     http://www.ee.ethz.ch/~slist/mrtg
FAQ         http://faq.mrtg.org    Homepage     http://www.mrtg.org
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi



More information about the mrtg mailing list