Leafy-Health
installation
via rubygems
gem install leafy-health
or add to your Gemfile
gem 'leafy-health'
installing the gem also takes care of the jar dependencies with jruby-1.7.16+
usage
an instance of the registry Leafy::Health::Registry can register and unresgister health-checks under a given name. any object with a #call method will do or block on the register method.
registry = Leafy::Health::Registry.new
you can ask the registry which names have already health-checks registered:
registry.names
simple health check
simple in the sense that either call returns nil which means healthy or a message which is the unhealthy state. the message can be any String.
registry.register( 'simple.block') do
if app.crashed
'application crashed'
end
end
or with a health-check object
class AppCheck < Leafy::Health::HealthCheck
def call
if app.crashed
'application crashed'
end
end
end
registry.register( 'simple.class', AppCheck.new )
health checks with message on healthy state
here the call method gets an argument which allows to create both healthy and unhealthy states with message.
registry.register( 'app.block') do
if app.crashed
unhealthy( 'application crashed' )
else
healthy( 'application ok' )
end
end
or with a health-check object
class AppCheck < Leafy::Health::HealthCheck
def call
if app.crashed
unhealthy( 'application crashed' )
else
healthy( 'application ok' )
end
end
end
registry.register( 'app.class', AppCheck.new )
health checks with structural data as message
registry.register( 'app.block') do
if app.crashed
unhealthy( :host => 'localhost', :msg => 'not good' )
else
healthy( :host => 'localhost', :msg => 'application ok' )
end
end
or as health-check object
class AppCheck < Leafy::Health::HealthCheck
def call
if app.crashed
unhealthy( :host => 'localhost', :msg => 'application crashed' )
else
healthy( :host => 'localhost', :msg => 'application ok' )
end
end
end
registry.register( 'app.class', AppCheck.new )
unregister health checks
registry.unregister( 'app.class' )
builtin ThreadDeadlockHeathCheck
registry.register( 'app.deadlock', Leafy::Health::ThreadDeadlockHeathCheck.new )
note
currently there is not further introspection on the registry and its health-check. with the Leafy::Json::HealthWriter (from leafy-rack) you can get a json representation of the current health report
Leafy::Json::HealthWriter.to_json( registry.health )
developement
get all the gems and jars in place
gem install jar-dependencies --development
bundle install
for running all specs
rake
or
rspec spec/reporter_spec.rb