=encoding UTF-8 =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" "arg0" "arg1" NotificationExec "user" "/usr/lib/collectd/exec/handle_notification" =head1 DESCRIPTION The C forks off an executable either to receive values or to dispatch notifications to the outside world. The syntax of the configuration is explained in L but summarized in the above synopsis. 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 two 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 it 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. =back =head1 EXEC DATA FORMAT The forked executable is expected to print values to C. The expected format is as follows: =over 4 =item Comments Each line beginning with a C<#> (hash mark) is ignored. =item B I [I] I Submits one or more values (identified by I, see below) to the daemon which will dispatch it to all its write-plugins. 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 is a key-value-pair. A list of currently understood options can be found below, all other options will be ignored. Values that contain spaces must be quoted with double quotes. I is a colon-separated list of the time and the values, each either an integer if the data-source is a counter, or a double if the data-source is 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) or B to use the current 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: PUTVAL leeloo/cpu-0/cpu-idle N:2299366 PUTVAL alice/interface/if_octets-eth0 interval=10 1180647081:421465:479194 =item B [I] BI Submits a notification to the daemon which will then dispatch it to all plugins which have registered for receiving notifications. The B if followed by a list of options which further describe the notification. The B option is special in that it will consume the rest of the line as its value. The B, B, and B