Ahhh yes. Well, I am not that intelligent when it comes to MRTG, it's more of a
convenience for me to have everything in one place than a necessity. Being a
n00b for MRTG, I assumed that it could only accept integers for its graphing
purposes and wasn't quite sure if it would grab that select group of numbers
out of all the other stuff that SNMP spews forth. That's why I went in to the
script mode. I've been doing ALOT of bash scripting lately and look at every
opportunity to do so as a challenge/learning opportunity, which it was. Not to
mention I had to create some scripts to do RAM and hard drive usage stats for
my Windows 7 machine that doesn't like to play nice with MRTG.
If using SNMP directly works, awesome, I'll do that. I've tried it before
without luck, but that was most likely the wet behind my ears. It still
populates without a second value, but the logs fill up quickly :-(
I actually created two scripts per device that I'm monitoring uptime for. One
that does days, and one that does hours...again, probably more for my anal
retentive quest to complicate things, but they do show up properly.
----- Original Message -----
From: "Steve Shipway" <[email protected]>
To: "Matt Baer" <[email protected]>, "mrtg" <[email protected]>
Sent: Thursday, February 11, 2010 6:35:15 PM
Subject: RE: [mrtg] MRTG not populating graphs from script that works on all
but CentOS
I promise I’m not laughing here, but what’s wrong with just using SNMP directly
– IE,
Target[whatever]: hrSystemUptime.0&pseudoZero:[email protected]: / 100
ShortLegend[whatever]: s
Options[whatever]: noo
… if you want it in seconds (since ticks are 1/100 sec), and
Target[whatever]: hrSystemUptime.0&pseudoZero:[email protected]: / 8640000
ShortLegend[whatever]: days
Options[whatever]: noo
… if you want it in days like your script produces (you’ll need to set kMG[] or
routers.cgi*Options[]:fixunit to prevent it from showing milli-days though)
Your script doesn’t work as it doesn’t return the data in the correct format. A
MRTG data collection plugin MUST return 4 lines of text (first two containing
the In and Out numberical values, then next two contain optional text for
description and uptime) and have a zero exit status.
This would work:
#!/bin/bash
ticks=$(snmpwalk -v 1 -c public 10.0.0.1 hrSystemUptime.0 | awk '{ print $5 }'
)
echo "$ticks"
echo "$ticks"
echo ""
echo ""
exit 0
However, it would have problems when the uptime is <1day as it just pulls out
the 5 th field which in this case would not be in days. The SNMP method above
would avoid this problem.
Steve
From: [email protected] [mailto:[email protected]] On
Behalf Of Matt Baer
Sent: Friday, 12 February 2010 1:09 p.m.
To: mrtg
Subject: [mrtg] MRTG not populating graphs from script that works on all but
CentOS
I created a script to monitor uptime on a number of machines. It's rough, ugly,
inefficient, and I will get laughed at, but it works. Here it is:
#!/bin/bash
ticks=$(snmpwalk -v 1 -c public 10.0.0.1 hrSystemUptime.0 | awk '{ print $5 }'
)
echo "$ticks"
Now, this script works and populates data for Windows 7, Ubuntu, FreeBSD, etc.
However, MRTG WILL NOT populate the data returned from this script from a
CentOS machine. I have gone through and verified everything I can possibly
think of. When run, the script itself returns the proper data. The config files
match perfectly with the other working machine with the exception of the host
data of course. To my knowledge, all it needs is a number to graph. The script
returns a number, why won't it graph?!_______________________________________________
mrtg mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/mrtg