gomes / sensu-community-plugins

Sensu community plugins for checks, handlers, & mutators.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sensu Community Plugins

Build Status

Community plugins, extensions, and handlers

This gem contains some example plugins and handlers for Sensu. Most of them are implemented in Ruby and use the sensu-plugin framework (a small gem); some also depend on additional gems (e.g. mysql). Some are shell scripts! All languages are welcome.

In the future, some sort of browsing/metadata/installation system may be implemented. For now, just clone this repository, take a look around, and copy the plugins you want to use.

Contributing

If you have a new plugin or handler, send a pull request! Please format the names of scripts using dashes to separate words and with an extension (.rb, .sh, etc), and make sure they are chmod +x'd. Extensions are unfortunately necessary for Sensu to be able to directly exec plugins and handlers on Windows.

Dependencies (ruby gems, packages, etc) and other requirements should be declared in the header of the plugin/handler file.

Only pull requests passing lint/tests will be merged.

Please do not not abandon your pull request, only you can help us merge it. We will wait for feedback from you on your pull request for up to one month. A lack of feedback in one month may require you to re-open your pull request.

There is a Vagrantfile with shell provisioning that will setup the major versions of Ruby and a sensu gemset for each if you wish to use it. To get started install Vagrant then type vagrant up in the root directory of the repo. Once it is up type vagrant ssh to remote into the box and then cd /vagrant && bundle install to set all necessary dependencies.

The box currently defaults to Ruby 2.1.4 but has 1.8.7, 1.9.3 and 2.0.0 installed as well. For workflow tips and tricks and further details please see the sensu-plugin repo.

Production usage

Because of the nature of this repository:

  • no test coverage
  • specific and exotic software being checked
  • no versioning system for plugins

this is not recommended that you use master for your production instances. Better pick something which works for you and lock it via :ref in your chef || puppet || ansible || bash script you name it.

If you have installed Sensu using the omnibus package it will use an embedded version of ruby, but the ruby plugins here will use the system one. If you want to use the embedded ruby, which has the sensu-plugin gem installed as well, you can set EMBEDDED_RUBY=true in /etc/default/sensu and restart the Sensu services. This will put the embedded ruby first in the $PATH for commands run by the Sensu services.

Rubocop linting

Rubocop is used to lint the style of the ruby plugins. This is done to standardize the style used within these plugins, and ensure high quality code. Feel free to submit changes to .rubocop.yml with pull requests.

bundle install
bundle exec rubocop

RSpec Testing

Currently we have RSpec as a test framework. Please add coverage for your check. This is little bit hard almost impossible for non-ruby checks. But don't be afraid on pushing your PR with non-ruby code. Just let someone from team know. Maybe we can help you to rewrite your check to Ruby or even we can invent something completely new to test your work. Just don't hesitate to contact us.

License

Copyright 2011 Sonian, Inc. and contributors.

Released under the same terms as Sensu (the MIT license); see LICENSE for details.

NOTE: When adding a plugin, copy the preceding two paragraphs to a comment in each source file, changing the copyright holder to your own name or organization. If you wish to use a different open source license, please submit a pull request adding that license to the repo and use that license's boilerplate instead.

About

Sensu community plugins for checks, handlers, & mutators.

License:MIT License


Languages

Language:Ruby 87.4%Language:Python 8.4%Language:Shell 2.4%Language:Erlang 1.7%Language:JavaScript 0.1%