Class library for writing Nagios (Icinga) plugins
Project description
The nagiosplugin library
About
nagiosplugin is a Python class library which helps writing Nagios (or Icinga) compatible plugins easily in Python. It cares for much of the boilerplate code and default logic commonly found in Nagios checks, including:
Nagios 3 Plugin API compliant parameters and output formatting
Full Nagios range syntax support
Automatic threshold checking
Multiple independend measures
Custom status line to communicate the main point quickly
Long output and performance data
Timeout handling
Persistent “cookies” to retain state information between check runs
Resume log file processing at the point where the last run left
No dependencies beyond the Python standard library (except for Python 2.6).
nagiosplugin runs on POSIX and Windows systems. It is compatible with Python 3.4, Python 3.3, Python 3.2, and Python 2.7.
Feedback and Suggestions
nagiosplugin is primarily written and maintained by Christian Kauhaus <kc@flyingcircus.io>. Feel free to contact the author for bugs, suggestions and patches.
A public issue tracker can be found at https://bitbucket.org/flyingcircus/nagiosplugin/issues/.
License
The nagiosplugin package is released under the Zope Public License 2.1 (ZPL), a BSD-style Open Source license.
Documentation
Comprehensive documentation is available online. The examples mentioned in the tutorials can also be found in the nagiosplugin/examples directory of the source distribution.
Development
Getting the source
The source can be obtained via mercurial from https://bitbucket.org/gocept/nagiosplugin:
hg clone https://bitbucket.org/gocept/nagiosplugin
This package supports installation in a virtualenv using zc.buildout.
Creating a build with zc.buildout
First, create a virtualenv if not already present:
virtualenv -p python3.4 --no-setuptools .
zc.buildout will take care of all required dependencies:
bin/pip3.2 install -U zc.buildout bin/buildout
If you want to use another Python version like 2.7, just the same steps with the Python version substituted:
virtualenv -p python2.7 --no-setuptools . bin/pip2.7 install -U zc.buildout bin/buildout
Tests
When the buildout succeeds, run the unit test by invoking:
bin/test
Our build server runs test against the trunk on a regular basis.
nagiosplugin also includes support for coverage reports. It aims at 100% test coverage where possible. The preferred way to get a coverate report is to use
bin/createcoverage
to determine test coverage and open the report in a web browser. Alternatively, run
bin/coverage run bin/test
to get a purely text-based coverage report.
You may run the supplied examples with the local interpreter:
bin/py src/nagiosplugin/examples/check_load.py
Documentation
The documentation uses Sphinx. Build the documentation (buildout should have been running before to install Sphinx etc.):
make -C doc html
How to release
To make a release, we prefer zest.releaser. To make a release, follow the standard procedure, which usually boils down to:
fullrelease
nagiosplugin tried to obey the semantic version numbering specification published on SemVer but adapts it a little bit to be PEP 386 compliant.
Contributors
nagiosplugin has become what it is now with the help of many contributors from the community. We want to thank everyone who has invested time and energy to make nagiosplugin better:
Wolfgang Schnerring <ws@gocept.com> for thoughts on the design.
Thomas Lotze <thomas@thomas-lotze.de> for improving the test infrastructure.
Christian Theune <ct@gocept.com> for comments and general feedback.
Michael Howitz <mh@gocept.com> and Andrei Chirila <andreich@gmail.com> for the Python 3 port.
Birger Schmidt <birger.schmidt@netways.de> for bug reports.
Florian Lagg <LaggAt@lagg-asus1.lan> for Windows compatibility fixes
Jeff Goldschrafe <jeff@holyhandgrenade.org> for the Python 2.6 backport.
José Manuel Fardello <jmfardello@gmail.com> for a logging fix.
Jordan Metzmeier <jmetzmeier01@gmail.com> for build fixes and Debian packaging.
Andrey Panfilov <andrew@panfilov.tel> for a perfdata fix.
Mihai Limbășan <mihai@limbasan.ro> for various output formatting fixes.
Release History
1.2.4 (2016-03-12)
Add optional keyword parameter verbose to Runtime.guarded(). This parameter allows to set verbose level in the early execution phase (#13).
Allow Context.evaluate() return either a Result or ServiceState object. In case the latter is returned, it gets automatically wrapped in a Result object (#6).
1.2.3 (2015-10-30)
Fix bug that caused a UnicodeDecodeError when using non-ASCII characters in fmt_metric (#12).
Print perfdata always on a single line (even in multi-line mode) to improve compatibility with various monitoring systems (#11).
1.2.2 (2014-05-27)
Mention that nagiosplugin also runs with Python 3.4 (no code changes necessary).
Make name prefix in status output optional by allowing to assign None to Check.name.
Accept bare metric as return value from Resource.probe().
Fix bug where Context.describe() was not used to obtain metric description (#13162).
1.2.1 (2014-03-19)
Fix build failures with LANG=C (#13140).
Remove length limitation of perfdata labels (#13214).
Fix formatting of large integers as Metric values (#13287).
Range: allow simple numerals as argument to Range() (#12658).
Cookie: allow for empty state file specification (#12788).
1.2 (2013-11-08)
New Summary.empty method is called if there are no results present (#11593).
Improve range violation wording (#11597).
Ensure that nagiosplugin install correctly with current setuptools (#12660).
Behave and do not attach anything to the root logger.
Add debugging topic guide. Explain how to disable the timeout when using pdb (#11592).
1.1 (2013-06-19)
Identical to 1.1b1.
1.1b1 (2013-05-28)
Made compatible with Python 2.6 (#12297).
Tutorial #3: check_users (#11539).
Minor documentation improvements.
1.0.0 (2013-02-05)
LogTail returns lines as byte strings in Python 3 to avoid codec issues (#11564).
LogTail gives a line-based iterator instead of a file object (#11564).
Basic API docs for the most important classes (#11612).
Made compatible with Python 2.7 (#11533).
Made compatible with Python 3.3.
1.0.0b1 (2012-10-29)
Improve error reporting for missing contexts.
Exit with code 3 if no metrics have been generated.
Improve default Summary.verbose() to list all threshold violations.
Move main source repository to https://bitbucket.org/gocept/nagiosplugin/ (#11561).
1.0.0a2 (2012-10-26)
API docs for the most important classes (#7939).
Added two tutorials (#9425).
Fix packaging issues.
1.0.0a1 (2012-10-25)
Completely reworked API. The new API is not compatible with the old 0.4 API so you must update your plugins.
Python 3 support.
The Cookie class is now basically a persistent dict and accepts key/value pairs. Cookie are stored as JSON files by default so they can be inspected by the system administrator (#9400).
New LogTail class which provides convenient access to constantly growing log files which are eventually rotated.
0.4.5 (2012-06-18)
Windows port. nagiosplugin code now runs under pywin32 (#10899).
Include examples in egg release (#9901).
0.4.4 (2011-07-18)
Bugfix release to fix issues reported by users.
Improve Mac OS X compatibility (#8755).
Include examples in distribution (#8555).
0.4.3 (2010-12-17)
Change __str__ representation of large numbers to avoid scientific notation.
0.4.2 (2010-10-11)
Packaging issues.
0.4.1 (2010-09-21)
Fix distribution to install correctly.
Documentation: tutorial and topic guides.
0.4 (2010-08-17)
Initial public release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.