Re: [Nagios-devel] Only first instance of a NEB module receives
Posted: Wed Jan 03, 2007 1:49 am
[email protected] wrote:
> Hello:
>
> I have the following two lines in nagios.cfg (lines split for
> readability):
>
> broker_module=/usr/lib/nagios/modules/ext_corr.o --file /tmp/sampler.2
> --tag module2 --control ops01;ZSecControl
>
> broker_module=/usr/lib/nagios/modules/ext_corr.o --file /tmp/sampler
> --tag module1 --control ops01;ZSecControl
>
> This is meant to create two identical feeds of data from the module.
>
> However only the first one seems to generate output.
>
> In the case above, only the file /tmp/sampler (module1) receives
> events. /tmp/sampler doesn't get any output. If I reverse the order of
> the entries, then /tmp/sampler is the only file to receive output from
> the module.
>
> The log messages:
>
> [1167001096] Nagios 2.6 starting... (PID=17742)
> [1167001096] LOG VERSION: 2.0
> [1167001096] ext_corr: module loading for --file /tmp/sampler
> --tag module1 --control ops01;ZSecControl: $Id$ - uses open
> [1167001096] Event broker module '/usr/lib/nagios/modules/ext_corr.o'
> initialized successfully.
> [1167001096] ext_corr: module loading for --file /tmp/sampler.2
> --tag module2 --control ops01;ZSecControl: $Id$ - uses open
> [1167001096] Event broker module '/usr/lib/nagios/modules/ext_corr.o'
> initialized successfully.
>
> seem to indicate that both are properly loaded and initalized. However
> the funny part is that they are loaded in the reverse order from that
> specified in the config file.
>
> I added the following code to the beginning of
> ext_corr.o:processCallback():
>
> snprintf(temp_buffer,sizeof(temp_buffer)-1,"ext_corr[%s]: callback activate\
> d\n", tag);
> temp_buffer[sizeof(temp_buffer)-1]='\x0';
> write_to_all_logs(temp_buffer,NSLOG_INFO_MESSAGE);
>
> and this reports that only the module2 instance is receiving
> events/being called.
>
> Is there some reason that multiple instances of a module can't
> register? Also attempting to shut down nagios hangs and it has to be
> given a kill -9 to exit.
>
> Hmm, on further investigation I can copy ext_corr.o to ext_corr1.o and
> change the broker_module lines above and get output to both module1
> and module2. Also the debugging code shows both modules are being
> called (as expected) and exiting nagios no longer hangs.
>
> So is this intentional? If so it is documented anywhere?
>
I believe you need to read the man-page for dlopen() or whatever
load-on-demand abi is installed on your system. A somewhat educated
guess is that the dynamic loader finds it already has the file loaded
and just returns a pointer to the already loaded file rather than
creating a new one.
--
Andreas Ericsson [email protected]
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
This post was automatically imported from historical nagios-devel mailing list archives
Original poster: [email protected]
> Hello:
>
> I have the following two lines in nagios.cfg (lines split for
> readability):
>
> broker_module=/usr/lib/nagios/modules/ext_corr.o --file /tmp/sampler.2
> --tag module2 --control ops01;ZSecControl
>
> broker_module=/usr/lib/nagios/modules/ext_corr.o --file /tmp/sampler
> --tag module1 --control ops01;ZSecControl
>
> This is meant to create two identical feeds of data from the module.
>
> However only the first one seems to generate output.
>
> In the case above, only the file /tmp/sampler (module1) receives
> events. /tmp/sampler doesn't get any output. If I reverse the order of
> the entries, then /tmp/sampler is the only file to receive output from
> the module.
>
> The log messages:
>
> [1167001096] Nagios 2.6 starting... (PID=17742)
> [1167001096] LOG VERSION: 2.0
> [1167001096] ext_corr: module loading for --file /tmp/sampler
> --tag module1 --control ops01;ZSecControl: $Id$ - uses open
> [1167001096] Event broker module '/usr/lib/nagios/modules/ext_corr.o'
> initialized successfully.
> [1167001096] ext_corr: module loading for --file /tmp/sampler.2
> --tag module2 --control ops01;ZSecControl: $Id$ - uses open
> [1167001096] Event broker module '/usr/lib/nagios/modules/ext_corr.o'
> initialized successfully.
>
> seem to indicate that both are properly loaded and initalized. However
> the funny part is that they are loaded in the reverse order from that
> specified in the config file.
>
> I added the following code to the beginning of
> ext_corr.o:processCallback():
>
> snprintf(temp_buffer,sizeof(temp_buffer)-1,"ext_corr[%s]: callback activate\
> d\n", tag);
> temp_buffer[sizeof(temp_buffer)-1]='\x0';
> write_to_all_logs(temp_buffer,NSLOG_INFO_MESSAGE);
>
> and this reports that only the module2 instance is receiving
> events/being called.
>
> Is there some reason that multiple instances of a module can't
> register? Also attempting to shut down nagios hangs and it has to be
> given a kill -9 to exit.
>
> Hmm, on further investigation I can copy ext_corr.o to ext_corr1.o and
> change the broker_module lines above and get output to both module1
> and module2. Also the debugging code shows both modules are being
> called (as expected) and exiting nagios no longer hangs.
>
> So is this intentional? If so it is documented anywhere?
>
I believe you need to read the man-page for dlopen() or whatever
load-on-demand abi is installed on your system. A somewhat educated
guess is that the dynamic loader finds it already has the file loaded
and just returns a pointer to the already loaded file rather than
creating a new one.
--
Andreas Ericsson [email protected]
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
This post was automatically imported from historical nagios-devel mailing list archives
Original poster: [email protected]