From 49bf8b3e61264d9783b07bc1299492c448e3a0eb Mon Sep 17 00:00:00 2001 From: Lorenz <12514511+RincewindsHat@users.noreply.github.com> Date: Sun, 23 Jan 2022 14:41:16 +0100 Subject: Point to Icinga Exchange instead of dead Monitoring Exchange (#1737) diff --git a/doc/developer-guidelines.sgml b/doc/developer-guidelines.sgml index 6f31f36..28674e0 100644 --- a/doc/developer-guidelines.sgml +++ b/doc/developer-guidelines.sgml @@ -13,7 +13,7 @@ 2013 Monitoring Plugins Development Guidelines - + 1796 @@ -72,14 +72,14 @@
Plugin Output for Nagios - - You should always print something to STDOUT that tells if the - service is working or why it is failing. Try to keep the output short - - probably less that 80 characters. Remember that you ideally would like + + You should always print something to STDOUT that tells if the + service is working or why it is failing. Try to keep the output short - + probably less that 80 characters. Remember that you ideally would like the entire output to appear in a pager message, which will get chopped off after a certain length. - As Nagios does not capture stderr output, you should only output to + As Nagios does not capture stderr output, you should only output to STDOUT and not print to STDERR.
Print only one line of text @@ -101,7 +101,7 @@ SERVICE STATUS: Information text However, note that this is not a requirement of the API, so you cannot depend on this - being an accurate reflection of the status of the service - the status should always + being an accurate reflection of the status of the service - the status should always be determined by the return code.
@@ -148,7 +148,7 @@ Code and output should try to respect the 80x25 size of a crt (remember when fixing stuff in the server room!)
- +
Plugin Return Codes The return codes below are based on the POSIX spec of returning a positive value. Netsaint prior to v0.0.7 supported non-POSIX @@ -157,11 +157,11 @@ Note: Some plugins will on occasion print on STDOUT that an error occurred and error code is 138 or 255 or some such number. These - are usually caused by plugins using system commands and having not + are usually caused by plugins using system commands and having not enough checks to catch unexpected output. Developers should include a default catch-all for system command output that returns an UNKNOWN return code. - + Plugin Return Codes @@ -175,20 +175,20 @@ 0 OK - The plugin was able to check the service and it + The plugin was able to check the service and it appeared to be functioning properly 1 Warning - The plugin was able to check the service, but it - appeared to be above some "warning" threshold or did not appear + The plugin was able to check the service, but it + appeared to be above some "warning" threshold or did not appear to be working properly 2 Critical - The plugin detected that either the service was not + The plugin detected that either the service was not running or it was above some "critical" threshold @@ -207,7 +207,7 @@
- +
Threshold and ranges @@ -218,7 +218,7 @@ set_thresholds(thresholds *, char *, char *) function to set the thresholds. The theory is that the plugin will do some sort of check which returns - back a numerical value, or metric, which is then compared to the warning and + back a numerical value, or metric, which is then compared to the warning and critical thresholds. Use the get_status(double, thresholds *) function to compare the value against the thresholds. This is the generalised format for ranges: @@ -226,14 +226,14 @@ [@]start:end - + Notes: start ≤ end start and ":" is not required if start=0 - if range is of format "start:" and end is not specified, + if range is of format "start:" and end is not specified, assume end is infinity to specify negative infinity, use "~" @@ -245,7 +245,7 @@ (inclusive of endpoints) - + Note: Not all plugins are coded to expect ranges in this format yet. There will be some work in providing multiple metrics. @@ -344,7 +344,7 @@ label can contain any characters except the equals sign or single quote (') - the single quotes for the label are optional. Required if + the single quotes for the label are optional. Required if spaces are in the label label length is arbitrary, but ideally the first 19 characters @@ -353,7 +353,7 @@ to specify a quote character, use two single quotes - warn, crit, min or max may be null (for example, if the threshold is + warn, crit, min or max may be null (for example, if the threshold is not defined or min and max do not apply). Trailing unfilled semicolons can be dropped @@ -363,12 +363,12 @@ same UOM. value may be a literal "U" instead, this would indicate that the actual value couldn't be determined - warn and crit are in the range format (see + warn and crit are in the range format (see ). Must be the same UOM UOM (unit of measurement) is one of: - no unit specified - assume a number (int or float) + no unit specified - assume a number (int or float) of things (eg, users, processes, load averages) s - seconds (also us, ms) @@ -385,9 +385,9 @@
Translations - If possible, use translation tools for all output to respect the user's language - settings. See for guidelines - for the core plugins. + If possible, use translation tools for all output to respect the user's language + settings. See for guidelines + for the core plugins.
@@ -436,7 +436,7 @@ - + @@ -447,17 +447,17 @@ Perl Nagios (ePN) requires stricter use of the some of Perl's features. This section outlines some of the steps needed to use ePN effectively. - + - - Do not use BEGIN and END blocks since they will be called - only once (when Nagios starts and shuts down) with Embedded Perl (ePN). In + + Do not use BEGIN and END blocks since they will be called + only once (when Nagios starts and shuts down) with Embedded Perl (ePN). In particular, do not use BEGIN blocks to initialize variables. - + To use utils.pm, you need to provide a full path to the module in order for it to work. - + e.g. use lib "/usr/local/nagios/libexec"; @@ -467,24 +467,24 @@ Perl scripts should be called with "-w" - + All Perl plugins must compile cleanly under "use strict" - i.e. at least explicitly package names as in "$main::x" or predeclare every variable. - + Explicitly initialize each variable in use. Otherwise with caching enabled, the plugin will not be recompiled each time, and therefore Perl will not reinitialize all the variables. All old variable values will still be in effect. - + Do not use >DATA< handles (these simply do not compile under ePN). Do not use global variables in named subroutines. This is bad practise anyway, but with ePN the compiler will report an error "<global_var> will not stay shared ..". Values used by - subroutines should be passed in the argument list. + subroutines should be passed in the argument list. If writing to a file (perhaps recording @@ -492,8 +492,8 @@ calls exit; that is caught by p1.pl, so output streams are never closed. - - As in all plugins need + + As in all plugins need to monitor their runtime, specially if they are using network resources. Use of the alarm is recommended noting that some Perl modules (eg LWP) manage timers, so that an alarm @@ -507,9 +507,9 @@ and then "exit $ERRORS{'OK'}" rather than "exit 0" - + - +
Runtime Timeouts @@ -524,14 +524,14 @@ df could lock up like that. Plus, it should just be more error resistant to be able to time out rather than consume resources. - +
Use DEFAULT_SOCKET_TIMEOUT All network plugins should use DEFAULT_SOCKET_TIMEOUT to timeout
- +
Add alarms to network plugins If you write a plugin which communicates with another @@ -543,16 +543,16 @@
- +
Plugin Options - - A well written plugin should have --help as a way to get + + A well written plugin should have --help as a way to get verbose help. Code and output should try to respect the 80x25 size of a crt (remember when fixing stuff in the server room!) - +
Option Processing For plugins written in C, we recommend the C standard @@ -585,11 +585,11 @@ -p port or password (--port or --passwd/--password)monitors operational -u url or username (--url or --username) - + Look at check_pgsql and check_procs to see how I currently think this can work. Standard options are: - + The option -V or --version should be present in all plugins. For C plugins it should result in a call to print_revision, a function in utils.c which takes two character arguments, the @@ -603,7 +603,7 @@ The option -h or --help should be present in all plugins. In C plugins, it should result in a call to print_help (or - equivalent). The function print_help should call print_revision, + equivalent). The function print_help should call print_revision, then print_usage, then should provide detailed help. Help text should fit on an 80-character width display, but may run as many lines as needed. @@ -666,7 +666,7 @@ As always, comments are welcome - making this consistent without a host of long options was quite a hassle, and I would - suspect that there are flaws in this strategy. + suspect that there are flaws in this strategy.
@@ -678,7 +678,7 @@ create and update test cases where possible. -To run a test, from the top level directory, run "make test". This will run +To run a test, from the top level directory, run "make test". This will run all the current tests and report an overall success rate. @@ -697,7 +697,7 @@ This runs the test in a summary format. -For a good and amusing tutorial on using Test::More, see this +For a good and amusing tutorial on using Test::More, see this link @@ -706,16 +706,16 @@ link
Testing the C library functions -We use the libtap library, which gives +We use the libtap library, which gives perl's TAP (Test Anything Protocol) output. This is used by the FreeBSD team for their regression testing. -To run tests using the libtap library, download the latest tar ball and extract. -There is a problem with tap-1.01 where +To run tests using the libtap library, download the latest tar ball and extract. +There is a problem with tap-1.01 where pthread support doesn't appear to work -properly on non-FreeBSD systems. Install with 'CPPFLAGS="-UHAVE_LIBPTHREAD" ./configure && make && make check && make install'. +properly on non-FreeBSD systems. Install with 'CPPFLAGS="-UHAVE_LIBPTHREAD" ./configure && make && make check && make install'. @@ -729,8 +729,8 @@ setup the tests. Run "make test" to run all the tests. See GNU Coding standards for general guidelines.
C coding - - Variables should be declared at the beginning of code blocks and + + Variables should be declared at the beginning of code blocks and not inline because of portability with older compilers. You should use /* */ for comments and not // as some compilers @@ -745,8 +745,8 @@ setup the tests. Run "make test" to run all the tests. If you have copied a routine from another source, make sure the licence from your source allows this. Add a comment referencing the ACKNOWLEDGEMENTS file, where you can put more detail about the source. - For contributed code, do not add any named credits in the source code - - contributors should be added into the THANKS.in file instead. + For contributed code, do not add any named credits in the source code + - contributors should be added into the THANKS.in file instead.
@@ -809,11 +809,11 @@ setup the tests. Run "make test" to run all the tests.
Contributed plugins - Plugins that have been contributed to the project and + Plugins that have been contributed to the project and distributed with the Monitoring Plugins 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 Monitoring Exchange. + 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 Icinga Exchange. 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. @@ -824,11 +824,11 @@ setup the tests. Run "make test" to run all the tests.
New plugins If you would like others to use your plugins, please add it to - the official 3rd party plugin repository, - Monitoring Exchange. + the official 3rd party plugin repository, + Icinga Exchange. - We are not accepting requests for inclusion of plugins into + We are not accepting requests for inclusion of plugins into our distribution at the moment, but when we do, these are the minimum requirements: @@ -843,9 +843,9 @@ setup the tests. Run "make test" to run all the tests. --timeout, --warning, --critical) - It is determined to be not redundant (for instance, we would not - add a new version of check_disk just because someone had provide - a plugin that had perf checking - we would incorporate the features + It is determined to be not redundant (for instance, we would not + add a new version of check_disk just because someone had provide + a plugin that had perf checking - we would incorporate the features into an exisiting plugin) @@ -857,7 +857,7 @@ setup the tests. Run "make test" to run all the tests. utils (perl or c or sh) rather than using its own - Includes patches to configure.in if required (via the EXTRAS list if + Includes patches to configure.in if required (via the EXTRAS list if it will only work on some platforms) @@ -870,5 +870,5 @@ utils (perl or c or sh) rather than using its own
- + -- cgit v0.10-9-g596f