index b332c27726d07e3ba281c331306c85b2e11f5ffe..86e694046704ef5353fe46bc7b207027a8e837b6 100644 (file)
</author>
</authorgroup>
- <pubdate>2006</pubdate>
+ <pubdate>2009</pubdate>
<title>Nagios plug-in development guidelines</title>
<revhistory>
<revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
+ <revnumber>1796</revnumber>
+ <date>2007-09-24 14:51:07 -0400 (Mon, 24 Sep 2007)</date>
</revision>
</revhistory>
<copyright>
- <year>2000 - 2006</year>
+ <year>2000 - 2009</year>
<holder>Nagios Plugins Development Team</holder>
</copyright>
the plug-in developers and encourage the standarization of the
different kind of plug-ins: C, shell, perl, python, etc.</para>
- <para>Nagios Plug-in Development Guidelines Copyright (C) 2000-2006
+ <para>Nagios Plug-in Development Guidelines Copyright (C) 2000-2009
(Nagios Plugins Team)</para>
<para>Permission is granted to make and distribute verbatim
<para>
Nagios plugins are developed to the GNU standard, so any OS which is supported by GNU
should run the plugins. While the requirements for compiling the Nagios plugins release
- is very small, to develop from CVS needs additional software to be installed. These are the
- minimum levels of software required:
+ are very basic, developing from the Git repository requires additional software to be
+ installed. These are the minimum levels of software required:
<literallayout>
- gnu make 3.79
- automake 1.9.2
- autoconf 2.58
+ GNU make 3.79
+ GNU automake 1.9.2
+ GNU autoconf 2.59
+ GNU m4 1.4.2
+ GNU libtool 1.5
</literallayout>
- To compile from CVS, after you have checked out the code, run:
+ To compile from Git, after you have cloned the repository, run:
<literallayout>
tools/setup
./configure
make install
</literallayout>
</para>
-
- <para>Note: gettext is no longer a developer platform requirement. A lot of the files in lib/ and m4/
- are synced with the coreutils project and we use the same levels of gettext that they
- distribute.
- </para>
- <para>Note: gnu libtool, which must be at version 1.5.22 or above, has files installed into CVS, so is not
- a development platform requirement.
- </para>
</section>
<section id="PlugOutput"><title>Plugin Output for Nagios</title>
the entire output to appear in a pager message, which will get chopped
off after a certain length.</para>
+ <para>As Nagios does not capture stderr output, you should only output to
+ STDOUT and not print to STDERR.</para>
+
<section><title>Print only one line of text</title>
<para>Nagios will only grab the first line of text from STDOUT
when it notifies contacts about potential problems. If you print
- multiple lines, you're out of luck. Remember, keep it short and
- to the point.</para>
+ multiple lines, you're out of luck (though this will be a feature of
+ Nagios 3). Remember, keep your output short and to the point.</para>
<para>Output should be in the format:</para>
<literallayout>
<section><title>Screen Output</title>
<para>The plug-in should print the diagnostic and just the
- synopsis part of the help message. A well written plugin would
+ usage part of the help message. A well written plugin would
then have --help as a way to get the verbose help.</para>
+
<para>Code and output should try to respect the 80x25 size of a
crt (remember when fixing stuff in the server room!)</para>
</section>
<orderedlist>
<listitem><para>space separated list of label/value pairs</para>
</listitem>
- <listitem><para>label can contain any characters</para>
+ <listitem><para>label can contain any characters except the equals sign or single quote (')</para>
</listitem>
<listitem><para>the single quotes for the label are optional. Required if
- spaces, = or ' are in the label</para>
+ spaces are in the label</para>
</listitem>
<listitem><para>label length is arbitrary, but ideally the first 19 characters
are unique (due to a limitation in RRD). Be aware of a limitation in the
</para>
<para>
-See the <ulink url="http://tinderbox.altinity.org">Nagios Plugins Tinderbox server</ulink>
+See the <ulink url="http://tinderbox.opsera.com">Nagios Plugins Tinderbox server</ulink>
for the daily test results.
</para>
<para>You should use /* */ for comments and not // as some compilers
do not handle the latter form.</para>
+
+ <para>You should also avoid using the type "bool" and its values
+ "true" and "false". Instead use the "int" type and the plugins' own
+ "TRUE"/"FALSE" values to keep the code uniformly.</para>
</section>
<section><title>Crediting sources</title>
</para>
</section>
- <section><title>CVS comments</title>
- <para>When adding CVS comments at commit time, you can use the following prefixes:
- <variablelist>
- <varlistentry><term>- comment</term>
- <listitem>
- <para>for a comment that can be removed from the Changelog</para>
- </listitem>
- </varlistentry>
- <varlistentry><term>* comment</term>
- <listitem>
- <para>for an important amendment to be included into a features list</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
+ <section><title>Commit Messages</title>
<para>If the change is due to a contribution, please quote the contributor's name
and, if applicable, add the SourceForge Tracker number. Don't forget to
update the THANKS.in file.</para>
+ <para>If you have a change that is useful for noting in the next release, please
+ update the NEWS file.</para>
+ <para>All commits will be written to a ChangeLog at release time.
+ </para>
</section>
<section id="translationsdevelopers"><title>Translations for developers</title>
<section id="Patches"><title>Patches</title>
<para>If you have a bug patch, please supply a unified or context diff against the
version you are using. For new features, please supply a diff against
- the CVS HEAD version.</para>
+ the Git "master" branch.</para>
<para>Patches should be submitted via
<ulink url="http://sourceforge.net/tracker/?group_id=29880&atid=397599">SourceForge's
Credit will always be given for any patches through a THANKS file in the distribution.</para>
</section>
- <section id="Newplugins"><title>New plugins</title>
+ <section id="Contributedplugins"><title>Contributed plugins</title>
+ <para>Plugins that have been contributed to the project and
+ distributed with the Nagios Plugin files are held in the contrib/ directory and are not installed
+ by default. These plugins are not officially supported by the team.
+ The current policy is that these plugins should be owned and maintained by the original
+ contributor, preferably hosted on <ulink url="http://exchange.nagios.org">Nagios Exchange</ulink>.
+ </para>
+ <para>If patches or bugs are raised to an contributed plugin, we will start communications with the
+ original contributor, but seek to remove the plugin from our distribution.
+ </para>
+ <para>The aim is to distribute only code that the Nagios Plugin team are responsible for.
+ </para>
+ </section>
+
+ <section id="Newplugins"><title>New plugins</title>
<para>If you would like others to use your plugins, please add it to
the official 3rd party plugin repository,
- <ulink url="http://www.nagiosexchange.org">NagiosExchange</ulink>.
+ <ulink url="http://exchange.nagios.org">Nagios Exchange</ulink>.
</para>
<para>We are not accepting requests for inclusion of plugins into
<orderedlist>
<listitem>
- <para>Include copyright and license information in all files</para>
+ <para>Include copyright and license information in all files. Copyright must be solely
+ granted to the Nagios Plugin Development Team</para>
</listitem>
<listitem>
<para>The standard command options are supported (--help, --version,