X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcollectd-exec.pod;h=59ce399d892873ab04bd589476ec4c2eda89a1a2;hb=d9ba7e3ed5d93e9abd34f961fff51676a096ac02;hp=0baf2ebe1c2972c800e8de73dbbce8c6590ee9b8;hpb=2b6176cab4f092354177473bbc74c5cdc2eaa2ec;p=collectd.git diff --git a/src/collectd-exec.pod b/src/collectd-exec.pod index 0baf2ebe..59ce399d 100644 --- a/src/collectd-exec.pod +++ b/src/collectd-exec.pod @@ -8,73 +8,253 @@ collectd-exec - Documentation of collectd's C LoadPlugin exec # ... - Exec myuser myprog - Exec otheruser /path/to/another/binary + 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 of an executable and reads back values that it writes -to C. 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. +The C forks of 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 DATA FORMAT +=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 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. + +=back + +=head1 EXEC DATA FORMAT The forked executable is expected to print values to C. The expected format is as follows: =over 4 -=item +=item Comments Each line beginning with a C<#> (hash mark) is ignored. -=item +=item B I [I] I -Other lines must consist of an I and a I, separated by -a space. A description of these two parts follows: +Submits one or more values (identified by I, see below) to the +daemon which will dispatch it to all it's 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. +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. -A I is a colon-separated list of values, prepended by the time -stamp in epoch, i.Ee. the same format RRDTool uses, see L. -As with the argument passed to RRDTool you can use B as the current time and -B for undefined values. However, undefined values can only passed for -B values. When setting B for a B data source the behavior is -undefined. +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, 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). + +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 1180647081:421465:479194 + alice/interface/if_octets-eth0 interval=10 1180647081:421465:479194 + +Since this action was the only one supported with older versions of the C all lines were treated as if they were prefixed with B. This is +still the case to maintain backwards compatibility but deprecated. + +=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