The one Nagios Plugin framework, forged in the fires of Mount Doom.
NOTE: The API has changed since version 2.1 (see issues #2 and #4)!!!
NagiosPlugin is an embarrassingly simple framework to write custom monitoring plugins for Nagios. It was born out of duplication, because all nagios plugins share some common behaviour...
Via bundler: Add this to your Gemfile and run bundle install
:
gem 'nagiosplugin'
Manually via Rubygems: Run gem install nagiosplugin
.
Writing your custom plugin is really simple:
Create your subclass from NagiosPlugin::Plugin
and define these
instance methods to determine the status:
require 'nagiosplugin'
class MyFancyPlugin < NagiosPlugin::Plugin
def critical?
# Enter your code here (returns true when critical, else false).
end
def warning?
# Enter your code here (returns true when warning, else false).
end
def ok?
# Enter your code... you get the idea.
end
end
Please keep in mind that the "worst" status always wins, i.e. if both
critical?
and warning?
are true then the status would be critical
(if none is true, then the status would be unknown of course)!
You may use your initialize
method to setup check data (NagiosPlugin
doesn't use that either), parse CLI options, etc.
Ask yourself what might be important to know (and fits into a text message) when Nagios just send you an alert in the middle of the night.
def message
# Create an info string (this will be printed after the
# status on stdout).
# Service name, status and message should be longer than 78 chars!!!
end
In your binary then call the build-in class method check
and you're done:
MyFancyPlugin.check
This will output the check result and exits in compliance with the official Nagios plug-in development guidelines
If anything funky happens in your code: NagiosPlugin does a "blind rescue mission" and transforms any execptions to an unknown status.
The API changed completely compared to v1.3 as well as the default command line options (they are gone). I suggest that you use 3rd party CLI Option Parsers because everyone has different preferences on this.
Please let me know if you find this usefull or if you want to contribute!
- Fork the project and run
bundle install
to resolve all development dependencies. - Add specs and/or features for it. This is important so I don't break it in a future version unintentionally.
- Make your feature addition or bug fix.
- Commit, do not mess with the Rakefile or gemspec. (If you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull.)
- Send me a pull request. Bonus points for topic branches.
Thanks to the following contributors for improving NagiosPlugin:
Copyright (c) 2011-2013 Björn Albers. See LICENSE for details.