Exec "myuser:mygroup" "myprog"
Exec "otheruser" "/path/to/another/binary" "arg0" "arg1"
NotificationExec "user" "/usr/lib/collectd/exec/handle_notification"
- NagiosExec "nagios:nagios" "/usr/lib/nagios/plugins/check_something"
</Plugin>
=head1 DESCRIPTION
-The C<exec plugin> forks of an executable either to receive values, to dispatch
-notifications to the outside world or to be able to use Nagios plugins. The
-syntax of the configuration is explained in L<collectd.conf(5)> but summarized
-in the above synopsis.
+The C<exec plugin> 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<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 C<perl plugin>, L<collectd-perl(5)>.
=head1 EXECUTABLE TYPES
-There are currently three types of executables that can be executed by the
+There are currently two types of executables that can be executed by the
C<exec plugin>:
=over 4
See L<NOTIFICATION DATA FORMAT> below for a description of the data passed to
these programs.
-=item C<NagiosExec>
-
-The executable is treated as a Nagios plugin. That means that the first line
-printed to C<STDOUT> 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
fact, after the program is started C<STDOUT> is connected to C</dev/null>.
The data is passed to the executables over C<STDIN> 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.
+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<nbsp>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
Host: myhost.mydomain.org
- Message: This is a test notification to demonstrate the format
- <newline>
+ \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.
=item B<Host>
-Name of the host concerned.
+=item B<Plugin>
+
+=item B<PluginInstance>
+
+=item B<Type>
-=item B<Message>
+=item B<TypeInstance>
-Message of the notification. This message should be made accessible to the
-user somehow.
+Identification of the performance data this notification is associated with.
+All of these fields are optional because notifications do not B<need> to be
+associated with a certain value.
=back
+=head1 USING NAGIOS PLUGINS
+
+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,
+C<exec-nagios.px>, which is shipped with the collectd distribution in the
+C<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, C<exec-nagios.conf>. You can find an
+example in the C<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.
+
=head1 CAVEATS
=over 4