Rapporteur Load Check

Gem Version Build Status Code Climate

Load checking for Rapporteur.

Installation

Add this line to your application's Gemfile:

gem 'rapporteur-load_check'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rapporteur-load_check

Supported environments

Supported Ruby versions:

  • MRI 2.0.0
  • MRI 1.9.3
  • MRI 1.9.2
  • MRI 1.8.7

Usage

To add the check to your application, define the check in your environment or application configuration files or initializers, such as:

# config/initializers/production.rb
Rapporteur.add_check(Rapporteur::Checks::LoadCheck)

And, if your server load is currently below the configured threshold, 0.54 for this example, this library will add a load key and value to the success response of Rapporteur (an HTTP 200 response):

{
  "load": 0.54
}

If, however, your server load is too high - let's say 12.32 - then this library will fail, cause Rapporteur to give a non-success response, and add a load key and message to the error output of the Rapporteur (an HTTP 500 response):

{
  "load": "above allowed threshold (12.32 > 8)"
}

Configuration

By default, a load value of 8 or greater triggers a failure. You can adjust this value by passing the threshold to LoadCheck.new, like so:

Rapporteur.add_check(Rapporteur::Checks::LoadCheck.new(4))

The above would cause the checker to fail if load goes above 4.0.

Localization

If you would like to localize the failure response, you may do so by adding a rapporteur.errors.load.excessive definition to your local I18n locales. This library will provide the value (current load value) and tolerance (configured threshold) in case you would like to include those values in your message.

For example:

fr:
  rapporteur:
    errors:
      load:
        excessive: "est trop élevé (%{value})"

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request