[Nagiosplug-help] How to verify if nagios was built with embperl?

Ralph.Grothe at itdz-berlin.de Ralph.Grothe at itdz-berlin.de
Mon Sep 24 15:22:09 CEST 2007


Hello,

this is a follow-on to my posting to this list about inexplicable
UNKNOWN state determination
by nagios of a custom plugin.

Unfortunately, no one seemed interested enough to reply.

However, meanwhile I think to have traced down the culprit.

It seems to be my convenience definition of a __DIE__ signal
handler in my plugin.

I defined this vileness in my code

$SIG{__DIE__} = sub { chomp(my $out = shift);
                      printf "%s - %s\n",
$NAGIOS_SERVICESTATE{3}, $out;
                      exit 3
                    };


as a sort of catch all abnomalies which I could catch as usual by
an or-ed die.

As shown in my last posting (see below)
my plugin's output and exit code behaved absolutely as expected
when run as nagios from the shell.

As soon as I comment the above sigdie handler out the plugin
shows
the green OK also in the web interface when run by nagios.

Since the %SIG hash is a package global 
I suspect that my nagios binary was built with some embperl
support
which I wasn't aware of.
(btw, no difference when I declare my sig handler as local which
should mask 
SIG's symbol table entry)

I haven't built nagios from the sources but for ease of
installation
resorted to prebuilt RPMs.
Unfortunately, in these RPMs I couldn't find any hint about the
build options,
nor some spec file.

So, how can I verify that my nagios binary indeed is precaching
Perl plugins
and executing them via embperl?

When I look at the shared libs there is a reference to some
libperl
which to me looks like I do run an embperl enabled nagios.

# rpm -q nagios
nagios-2.9-1.el5

# uname -r
2.6.18-8.el5
 
# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 5 (Tikanga)

# ldd /usr/sbin/nagios 
        linux-gate.so.1 =>  (0x00631000)
        libperl.so =>
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so
(0x00110000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x008a7000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00708000)
        libdl.so.2 => /lib/libdl.so.2 (0x004ac000)
        libm.so.6 => /lib/libm.so.6 (0x00483000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x046f2000)
        libutil.so.1 => /lib/libutil.so.1 (0x00df8000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x004b2000)
        libc.so.6 => /lib/libc.so.6 (0x00344000)
        /lib/ld-linux.so.2 (0x00327000)


Regards

Ralph

> -----Original Message-----
> From: nagiosplug-help-bounces at lists.sourceforge.net
> [mailto:nagiosplug-help-bounces at lists.sourceforge.net]On Behalf
Of
> Ralph.Grothe at itdz-berlin.de
> Sent: Friday, September 21, 2007 7:30 PM
> To: nagiosplug-help at lists.sourceforge.net
> Subject: [Nagiosplug-help] Inexplicable UNKNOWN state of custom
> plugindisplayed in web interface
> 
> 
> Hello,
> 
> I have a nasty bug that I cannot resolve.
> 
> I have written a Perl plugin that runs snmp checks against
> environmental sensor devices
> to poll the temprature at various spots in the data centre.
> 
> As far as I can see I have obeyed the prerequisites a plugin
must
> meet.
> It outputs a single line with status and values
> as well as the correct return code.
> 
> When I execute it from the shell as nagios user it behaves as
> expected.
> e.g.
> 
> $ /usr/lib/nagios/plugins/check_sensor_temp.pl -H sensor_r06 -C
> public -w 17:27 -c 10:30
> SENSOR OK - temp: T0=21.40 degC T1=24.50 degC 
> $ echo $?
> 0
> 
> The plugin's output is also correctly displayed as above in the
> web interface's status information field.
> However, this is not true for the bg coloring (which is orange)
> and 
> the text in the table field that displays the status of the
last
> check, 
> where it reads UNKNOWN,
> just as if nagios had received an exit code of 3
> 
> In the nagios log in the filesystem I can only see appearances
of
> my nothing changing forced
> external commands from reschedule check clicks via the web
> interface,
> like this (but nothing else):
> 
> [1190389354] EXTERNAL COMMAND:
> SCHEDULE_FORCED_SVC_CHECK;sensor_r06;SRZ_Temp;1190389352
> 
> Trying to look at the event log from within the web interface
> stalls my browser
> because the log file is obviously too long as I get a lot of
> check results for passive checks
> from distributed servers.
> Maybe a quicker log rotation scheme could alliviate, but I find
> event log CGI broken
> if it hangs my browser.
> 
> Can anyone give me some hint why I get UNKNOWN states
displayed,
> and how I could try to debug this (maybe some strace on the
> nagios scheduler?)
> 
> Regards
> 
> Ralph
> 
> --------------------------------------------------------------
> -----------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Nagiosplug-help mailing list
> Nagiosplug-help at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nagiosplug-help
> ::: Please include plugins version (-v) and OS when reporting 
> any issue. 
> ::: Messages without supporting info will risk being sent to
/dev/null
> 




More information about the Help mailing list