Include Health October 29, 2008
Posted by reidmix in Example, Plugins & Gems, Rails.Tags: big brother, check_health, monitoring, nagios, sa, sysadmin
1 comment so far
I created a little plugin to make it easier to offer health check URLs in all our applications called Health. These URLs are a necessity for our SysAdmins to hook into Big Brother or Nagios. These monitoring systems systematically poll an application at this URL to check the status of the application.
To get started, install the health plugin and include it in your Application controller:
class ApplicationController < ActionController::Base include Health end [/sourcecode] That's it. You should be able to navigate to <a href="http://localhost:3000/check_heath">http://localhost:3000/check_heath</a>. Health sets up the named route '<span class="s1">check_health' and</span> by default it will check the connection of the database by running a "<strong>select 1</strong>" SQL statement. If all goes well you should see "SERVERUP". If there's a problem with the query you will see "DBDOWN" or an 500 error depending on the level of problem. You can turn off the DB checking (our SysAdmins wanted it): ApplicationController < ActionController::Base include Health health_check :with_db => false end
One more trick, it does is handle any additional / custom checks that you may require. Pass a block, Proc, or a symbol that represents the name of the method to the health_check directive:
ApplicationController < ActionController::Base include Health health_check do |controller| controller.has_donut? || "no donut" end end [/sourcecode] In this case, assuming the controller has a method called has_donut? which does not return false or nil, you will see the “SERVERUP” message, otherwise you will see what was last evaluated in a message like “PROCDOWN no donut”
And you can mix and match all three types of blocks, Procs, and symbols — more examples are in the README.