COLLECTD-EXEC(5) | collectd | COLLECTD-EXEC(5) |
collectd-exec - Documentation of collectd's "exec plugin"
# See collectd.conf(5) LoadPlugin exec # ... <Plugin exec> Exec "myuser:mygroup" "myprog" Exec "otheruser" "/path/to/another/binary" "arg0" "arg1" NotificationExec "user" "/usr/lib/collectd/exec/handle_notification" </Plugin>
The "exec plugin" forks off an executable either to receive values or to dispatch notifications to the outside world. The syntax of the configuration is explained in collectd.conf(5) but summarized in the above synopsis.
If you want/need better performance or more functionality you should take a long look at the "perl plugin", collectd-perl(5).
There are currently two types of executables that can be executed by the "exec plugin":
See "EXEC DATA FORMAT" below for a description of the output format expected from these programs.
Warning: If the executable only writes one value and then exits it will be executed every Interval seconds. If Interval is short (the default is 10 seconds) this may result in serious system load.
See "NOTIFICATION DATA FORMAT" below for a description of the data passed to these programs.
The forked executable is expected to print values to "STDOUT". The expected format is as follows:
An Identifier is of the form "host/plugin-instance/type-instance" with both instance-parts being optional. If they're omitted the hyphen must be omitted, too. plugin and each instance-part may be chosen freely as long as the tuple (plugin, plugin instance, type instance) uniquely identifies the plugin within collectd. type identifies the type and number of values (i. e. data-set) passed to collectd. A large list of predefined data-sets is available in the types.db file. See types.db(5) for a description of the format of this file.
The OptionList is an optional list of Options, 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.
Valuelist 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 U. When submitting U to a counter the behavior is undefined. The time is given as epoch (i. e. standard UNIX time) or N 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 all following values, so you don't need to re-set an option over and over again.
The currently defined Options are:
Please note that this is the same format as used in the unixsock plugin, see collectd-unixsock(5). 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
The PUTNOTIF if followed by a list of options which further describe the notification. The message option is special in that it will consume the rest of the line as its value. The message, severity, and time options are mandatory.
Valid options are:
The current supported types are:
Please note that this is the same format as used in the unixsock plugin, see collectd-unixsock(5).
When collectd exits it sends a SIGTERM to all still running child-processes upon which they have to quit.
The notification executables receive values rather than providing them. In fact, after the program is started "STDOUT" is connected to "/dev/null".
The data is passed to the executables over "STDIN" in a format very similar to HTTP: At first there is a "header" with one line per field. Every line consists of a field name, ended by a colon, and the associated value until end-of-line. The "header" is ended by two newlines immediately following another, i.e. an empty line. The rest, basically the "body", is the message of the notification.
The following is an example notification passed to a program:
Severity: FAILURE Time: 1200928930.515 Host: myhost.mydomain.org \n 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.
The following environment variables are set by the plugin before calling exec:
Though the interface is far from perfect, there are tons of plugins for Nagios. You can use these plugins with collectd by using a simple transition layer, "exec-nagios.px", which is shipped with the collectd distribution in the "contrib/" directory. It is a simple Perl script that comes with embedded documentation. To see it, run the following command:
perldoc exec-nagios.px
This script expects a configuration file, "exec-nagios.conf". You can find an example in the "contrib/" directory, too.
Even a simple mechanism to submit "performance data" to collectd is implemented. If you need a more sophisticated setup, please rewrite the plugin to make use of collectd's more powerful interface.
collectd(1), collectd.conf(5), collectd-perl(5), collectd-unixsock(5), fork(2), exec(3)
Florian Forster <octo@collectd.org>
2019-04-06 | 5.8.1.git |