=head1 NAME collectd-exec - Documentation of collectd's C =head1 SYNOPSIS # See collectd.conf(5) LoadPlugin exec # ... Exec "myuser:mygroup" "myprog" Exec "otheruser" "/path/to/another/binary" NotificationExec "user" "/usr/lib/collectd/exec/handle_notification" NagiosExec "nagios:nagios" "/usr/lib/nagios/plugins/check_something" =head1 DESCRIPTION The C forks of an executable either to receive values, to dispatch notifications to the outside world or to be able to use Nagios plugins. If you want/need better performance or more functionality you should take a long look at the C, L. =head1 EXECUTABLE TYPES There are currently three types of executables that can be executed by the C: =over 4 =item C These programs are forked and values that it writes to C are read back. The executable is forked in a fashion similar to L: It is forked once and not again until it exits. If it exited, it will be forked again after at most I seconds. It is perfectly legal for the executable to run for a long time and continuously write values to C. See L below for a description of the output format expected from these programs. B If the executable only writes one value and then exits I will be executed every I seconds. If I is short (the default is 10 seconds) this may result in serious system load. =item C The program is forked once for each notification that is handled by the daemon. The notification is passed to the program on C in a fashion similar to HTTP-headers. In contrast to programs specified with C the execution of this program is not serialized, so that several instances of this program may run at once if multiple notifications are received. See L below for a description of the data passed to these programs. =item C The executable is treated as a Nagios plugin. That means that the first line printed to C by this program is used as the text of a notification and the severity of the notification depends on the exit status of the executable only. For information on how to write Nagios plugins please refer to the Nagios documentation. If a plugin works with Nagios but not with collectd please complain on the collectd mailing list instead. =back =head1 EXEC DATA FORMAT The forked executable is expected to print values to C. The expected format is as follows: =over 4 =item Each line beginning with a C<#> (hash mark) is ignored. =item Other lines must consist of an I, an optional I and a I, separated by a spaces. A description of these two parts follows: An I is of the form CBIB<->IBIB<->I> with both I-parts being optional. If they're omitted the hyphen must be omitted, too. I and each I-part may be chosen freely as long as the tuple (plugin, plugin instance, type instance) uniquely identifies the plugin within collectd. I identifies the type and number of values (i.Ee. data-set) passed to collectd. A large list of predefined data-sets is available in the B file. See L for a description of the format of this file. The I is an optional list of I, where each option if a key-value-pair. A list of currently understood options can be found below, all other options will be ignored. I is a colon-separated list of the time and the values, each either an integer if the data-source is a counter, of a double if the data-source if of type "gauge". You can submit an undefined gauge-value by using B. When submitting B to a counter the behavior is undefined. The time is given as epoch (i.Ee. standard UNIX time). You can mix options and values, but the order is important: Options only effect following values, so specifying an option as last field is allowed, but useless. Also, an option applies to B following values, so you don't need to re-set an option over and over again. The currently defined B are: =over 4 =item BI Gives the interval in which the data identified by I is being collected. =back Please note that this is the same format as used in the B, see L. There's also a bit more information on identifiers in case you're confused. Since examples usually let one understand a lot better, here are some: leeloo/cpu-0/cpu-idle N:2299366 alice/interface/if_octets-eth0 interval=10 1180647081:421465:479194 =back When collectd exits it sends a B to all still running child-processes upon which they have to quit. =head1 NOTIFICATION DATA FORMAT The notification executables receive values rather than providing them. In fact, after the program is started C is connected to C. The data is passed to the executables over C in a format very similar to HTTP-headers: There is one line per field. Every line consists of a field name, ended by a colon, and the associated value until end-of-line. The input is ended by two newlines immediately following another. The following is an example notification passed to a program: Severity: FAILURE Time: 1200928930 Host: myhost.mydomain.org Message: This is a test notification to demonstrate the format The following header files are currently used. Please note, however, that you should ignore unknown header files to be as forward-compatible as possible. =over 4 =item B Severity of the notification. May either be B, B, or B. =item B