Hi Daniel,

Yes that example was horribly bodged. I haven't inspected the code, but I 
suspect MRTG works with the value returned by SNMP. For example, I receive this:

SNMPv2-MIB::sysUpTime.0 = Timeticks: (105630500) 12 days, 5:25:05.00

That cannot be graphed because it is not a number. Everything that MRTG graphs 
must be turned into some number. The example is also horribly bodged because 
it's trying to use a bandwidth graph instead of a gauge. MRTG provides for 
graphing values like CPU load, Memory, and Free disk space. You really want to 
grab the most recent book as it will tell you how to construct these. I'll give 
you an example:

Target[the_graph]:        
1.3.6.1.4.1.32050.2.1.27.5.1&1.3.6.1.4.1.32050.2.1.27.5.1:[email protected]:::::2
 * -1.1034882
Options[the_graph]:       unknaszero,gauge,growright,nopercent,expscale,noo
SetEnv[the_graph]:        MRTG_INT_IP="No Ip" MRTG_INT_DESCR="n/a"
Colours[the_graph]:       ORANGE#dd8811,NONE#000000,VIOLET#0000ff,DARK 
GREEN#006600
Title[the_graph]:         Voltage Monitor
MaxBytes[the_graph]:      850
AbsMax[the_graph]:        850
XSize[the_graph]:         600

All of these directives are explained in the book. The two most important ones 
are the Target and Options directives. The gauge option is what makes it a 
gauge graph, and the noo option suppresses one side of the graph (input or 
output). With the directives you can construct your own custom graph with 
correct units for uptime, and a scale that will make sense. You can control 
titles, legend values, etc.  

Your first issue is how to convert 'Timeticks: (105630500) 12 days, 5:25:05.00' 
to a number. I would suggest graphing the hours of uptime. Even after a few 
years of uptime, the value itself will be less than 100,000 and probably graph 
well over time. 

MRTG provides for pre-processing of SNMP values before they are passed to MRTG. 
I'm performing math before I use the voltage value. Since I'm pretty sure that 
the math is any valid perl statement, you might be able to get away with Perl. 
That being said, you may be best served by simply creating your own data 
collection plug-in, which is thankfully easier done than said. Straight from 
the book:

Target[ezwf]: `/usr/local/bin/mrtg-scripts -a 1`

All you need to is create a bash script that pipes your snmpwalk output into a 
awk, and then convert the returned value into the number of hours. Timeticks 
can be converted to hours: Hours = Timeticks / 100 / 60 / 60. 

Something like:

uptime=`snmpwalk -v1 -c public 10.0.0.1 SysUptime | awk -F'[()]' '{print $2}'`
let hours=uptime
let hours=$hours/100/60/60
echo $hours

If you run that bash and pass it into MRTG, with directives to create a gauge 
type graph, you should get a fairly nifty uptime graph. With correct units for 
time as a bonus. 



Sincerely, 

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

----- Original Message -----
From: "mrtg-request" <[email protected]>
To: "mrtg" <[email protected]>
Sent: Friday, September 28, 2018 3:00:02 AM
Subject: mrtg Digest, Vol 132, Issue 1

Send mrtg mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.oetiker.ch/cgi-bin/listinfo/mrtg
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

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


Today's Topics:

   1. Graphing uptime (Daniel Beardsmore)


----------------------------------------------------------------------

Message: 1
Date: Fri, 28 Sep 2018 10:06:23 +0100
From: "Daniel Beardsmore" <[email protected]>
To: <[email protected]>
Subject: [mrtg] Graphing uptime
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"

Hello

 

I can see that graphing uptime is possible, as you can see here:

 

http://www.hotelsvillegia.com/mrtg/uptime.html

 

The HTML pages report uptime in the format: "163 days, 21:07:10"

 

If I check manually, I get this:

 

snmpget -v2c -c somecommunity somehost 1.3.6.1.2.1.1.3.0

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1415941565) 163 days,
21:10:15.65

 

The format is almost the same, but the latter contains the full centisecond
accuracy. You do nonetheless get the raw number included.

 

Now, using this in MRTG yields:

 

2018-09-27 19:56:04 -- 2018-09-27 19:51:33: WARNING: Expected a number but
got '163 days, 7:17:10'

 

Looking at the source code, I cannot determine quite how uptime is
processed. It seems odd that the format is almost the same (without the
centiseconds), which suggests (along with other code) that MRTG receives
pre-formatted output, and then has to scrape out the useful bits. (Which is
just plain horrible if this is true.)

 

Am I right in thinking that MRTG presently has no way to extract the raw
figure here? It seems that the SNMP library is formatting the data
prematurely and MRTG just works with that preformatted value as it suits its
own purposes, but that you cannot get the raw data out if you choose, for
example if you want to record uptime as a graph for checking for reboots.

 

In the example posted, I suspect that was bodged to get that to work.

 

Regards

 

Daniel. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.oetiker.ch/pipermail/mrtg/attachments/20180928/8eacb971/attachment-0001.html>

------------------------------

Subject: Digest Footer

_______________________________________________
mrtg mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/mrtg


------------------------------

End of mrtg Digest, Vol 132, Issue 1
************************************
(null)

_______________________________________________
mrtg mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/mrtg

Reply via email to