Nagios freshness checks randomly think check results are from 1973.

Thomas Guyot-Sionnest dermoth at aei.ca
Tue Aug 12 08:17:32 CEST 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/08/08 11:23 PM, Thomas Guyot-Sionnest wrote:
> On 11/08/08 04:57 PM, fevin Kagen wrote:
>> So...    is a date sent in the SNMP trap or is the date set to the
>> time that Nagios receives the alert?
> 
> It's in the command sent to the Nagios command pipe.
> 
> See:
> 
> http://nagios.sourceforge.net/docs/3_0/extcommands.html
> http://www.nagios.org/developerinfo/externalcommands/commandlist.php
> 
>> Is there a way to output to both the existing output (the nagios
>> command file) and a debug output?  It doesn't happen all the time so
>> trying to capture a bad entry would mean taking the whole system down
>> for a week plus.
> 
> I never touched python before, but looks plain simple object-oriented
> programming. I'd try making the post_results function looks like this:
> 
> def post_results(host, job, mondata_res, return_code):
>       mytime = time.time()
>       mytime = str(mytime)
>       mytime = mytime[:-3]
>       #print mondata_res
>       output = open('/usr/local/nagios/var/rw/nagios.cmd', 'w')
>       debug_out = open('/tmp/services-debug.out, 'a')
>       results = "[" + mytime + "] " + "PROCESS_SERVICE_CHECK_RESULT;" \
>         + host + ";" + job + ";" \
>         + return_code + ";" + mondata_res + "\n"
>       output.write(results)
>       debug_out.write(results)
> 
> The change are oppening a 2nd file in append mode:
>   debug_out = open('/tmp/services-debug.out, 'a')
> 
> And then writing the same thing as the nagios out to it:
>   debug_out.write(results)
> 
> As soon as it fails check the end of that file, you should see the same
> thing as what nagios received. If the [time] part is the problem thoug I
> can't really help. This is the part that generated the time part:
> 
>   mytime = time.time()
>   mytime = str(mytime)
>   mytime = mytime[:-3]
> 

Well, python is a language I wouldn't refuse to learn, and I just
started looking at it. On the fun side there's an interactive mode that
let you learn as you try live...

After a few minutes of reading http://docs.python.org/tut/ ...

- From what I understand in the above commands, time.time() returns you a
float object that returns unix time with two decimals, ex:
1218520859.75.  In this plugin the author strips the last three
characters from the string'ified value ([:-3] to get a normal timestamp.
Whenever the time is rounded (ex: 1218520859.7, 1218520859.0) this
strips too many characters and you get a date far in the past.

The proper way to do it is simply by converting it to an integer, i.e.
replace the three lines above with:

mytime = str(int(time.time()))

Since I believe the str() was only to use the hooks on it, this probably
works as well:

mytime = int(time.time())

Hope this helps.

- --
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIoSr86dZ+Kt5BchYRAmZ5AJ9zH2akrPQfhsLhve74jgxtdicLjwCfWsIo
qt0WgLTig7uVQvf1JwYcCMA=
=KMAD
-----END PGP SIGNATURE-----

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null





More information about the Users mailing list