[collectd] Notifications not working

Stian Øvrevåge sovrevage at gmail.com
Wed Nov 7 19:45:04 CET 2012


On Tue, Nov 6, 2012 at 7:41 AM, Sebastian Harl <sh at tokkee.org> wrote:
> Hi,
>
> On Mon, Nov 05, 2012 at 01:31:24PM +0100, Stian Øvrevåge wrote:
>> Hi list, trying to configure notifications but I find the
>> documentation quite confusing.
>
> Which parts of the documentation are not clear to you?
>
>> My current non-working test config looks like this:
>>
>> From collectd.conf:
>>
>> LoadPlugin exec
>> <Plugin exec>
>>   NotificationExec "user" "echo 'notification' >> /home/user/notiftest"
>> </Plugin>
>
> The 'exec' command is not run inside a shell but it's executed using
> execvp(3). Thus, your command does not work. Rather, collectd tries to
> execute some command called "echo 'notification' >>
> /home/user/notiftest".
>
> (Side-note: In order to specify a command plus arguments, you need to
> provide multiple arguments to the "NotificationExec" option:
>   NotificationExec "user" "cmd" "foo" "bar")
>

Thank you. I'm not a developer and I have never heard of execvp before.
The documentation could include more working examples in my opinion.

I have now created a shell script that without arguments would execute
my command.

But nothing happens still.

LoadPlugin exec
<Plugin exec>
  NotificationExec "kbandusr" "/opt/collectd/etc/instance-testing/script.sh"
</Plugin>


>> LoadPlugin snmp
>> <Plugin snmp>
>>
>>   <Data "cisco_cpu">
>>     Type "cisco_cpu"
>>     Table true
>>     Values "CISCO-PROCESS-MIB::cpmCPUTotal5secRev"
>> "CISCO-PROCESS-MIB::cpmCPUTotal1minRev"
>> "CISCO-PROCESS-MIB::cpmCPUTotal5minRev"
>>   </Data>
>>
>>   <Host "test-switch">
>>     Address "10.0.0.1"
>>     Version 2
>>     Community "public"
>>     Collect "cisco_cpu"
>>     Interval 60
>>   </Host>
>>
>> </Plugin>
>>
>>  <Threshold>
>>   <Host "test-switch">
>>     <Plugin "snmp">
>>       <Type "cisco_cpu">
>>         Instance "1"  // Tried with and without this
>>          WarningMin    0.00
>>          WarningMax 8.00
>>          FailureMin    0.00
>>          FailureMax 12.00
>>          DataSource "cpu5sec" // Tried with and without this
>>       </Type>
>>     </Plugin>
>>   </Host>
>>  </Threshold>
>
> This looks fine to me and should match the example data below.
>
>> The data is collected fine from the switch:
>>
>> rrdtool lastupdate cisco_cpu-1.rrd
>>  cpu5sec cpu1min cpu5min
>> 1352118105: 22.000000 10.000000 9.000000
>>
>> But nothing is written to the notiftest-file so I'm assuming the
>> command is not executed.
>>
>> I'm running collectd in foreground but it gives no errors there, nor
>> in the syslog.
>
> The problem is that collectd (the exec plugin) connects stdout and
> stderr of the child process to a pipe but does not read from that. Thus,
> you're not seeing any messages that execvp() failed.
>
> I think we should let the exec plugin read everything from stderr and
> log that as error messages.

Does this mean that any errors from execvp() are not logged per today?

>
> HTH,
> Sebastian
>
> --
> Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/
>
> Those who would give up Essential Liberty to purchase a little Temporary
> Safety, deserve neither Liberty nor Safety.         -- Benjamin Franklin
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iEYEARECAAYFAlCYsQUACgkQEFEKc4UBx/z1WwCcDGb0swDv/AKbgblhALKtVHSX
> 3qIAoIftn14XZB9/ZJV1itqjq9vlCO44
> =2wm8
> -----END PGP SIGNATURE-----
>



More information about the collectd mailing list