Inspired by the ease of installing and setting up fitter-happier as a Rails application's health check, but frustrated by its lack of flexibility, OK Computer was born. It provides a robust endpoint to perform server health checks with a set of built-in plugins, as well as a simple interface to add your own custom checks.
Add this line to your application's Gemfile:
gem 'okcomputer'
And then execute:
$ bundle
Or install it yourself as:
$ gem install okcomputer
To perform the default checks (application running and ActiveRecord database connection), do nothing other than adding to your application's Gemfile.
We also include a MongoidCheck, but do not register it. If you use Mongoid, replace the default ActiveRecord check like so:
OKComputer::Registry.register "database", OKComputer::MongoidCheck.new
If you use another database adapter, see Registering Custom Checks below to
build your own database check and register it with the name "database" to
replace the built-in check, or use OKComputer::Registry.deregister "database"
to stop checking your database altogether.
Register additional checks in an initializer, like do:
# config/initializers/okcomputer.rb
OKComputer::Registry.register "resque_down", OKComputer::ResqueDownCheck.new("critical", 100)
OKComputer::Registry.register "resque_backed_up", OKComputer::ResqueBackedUpCheck.new
The simplest way to register a check unique to your application is to subclass
OKComputer::Check and implement your own #call
method, which returns the
output string, and calls mark_failure
if anything is wrong.
# config/initializers/okcomputer.rb
class MyCustomCheck < OKComputer::Check
def call
if rand(10).even?
"Even is great!"
else
mark_failure
"We don't like odd numbers"
end
end
end
OKComputer::Registry.register "check_for_odds", MyCustomCheck.new
- Perform a simple up check: http://example.com/okcomputer
- Perform all installed checks: http://example.com/okcomputer/all
- Perform a specific installed check: http://example.com/okcomputer/database
Checks are available as plain text (by default) or JSON by appending .json, e.g.:
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request