Skip to content

jnewland/pulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pulse

Pulse adds an action to your rails project that can be used for external health checking. The most common use is by a http proxy such as haproxy or a monitoring tool such as god.

Authors

Requirements

  • Rails
  • MySQL, Postgres, or sqlite

Installation

Rails 3.x

Just add the gem to your Gemfile and then bundle install:

  
    gem 'rails-pulse'
  

In your config/routes.rb:

  
    pulse
    # or customize the URL
    pulse '/admin/pulse'
  

Rails 2.x

In your config/environment.rb:

  
    config.gem 'rails-pulse', :source => "http://gemcutter.org/", :lib => "pulse"
  

Install the gem:

  
    cd RAILS_ROOT
    rake gems:install
  

Finally, add a route to config/routes.rb:

  
    map.pulse
    # or customize the URL
    map.pulse '/admin/pulse'
  

This configures pulse to work at the ‘pulse’ URL. If you would rather use a different URL:

  
    map.pulse 'some/other/url'
  

haproxy configuration

haproxy can be configured to use the /pulse url for its health checking. Just add:

  
    option httpchk GET /pulse
  
  
    listen rails :9000
      server rails-1 localhost:8000 maxconn 1 check inter 20000 fall 1
      server rails-2 localhost:8001 maxconn 1 check inter 20000 fall 1
      ...
  

god configuration

You are using god to watch your mongrels, right?

In your mongrel watch, add the following restart condition:

  
    w.restart_if do |restart|
      ...
      restart.condition(:http_response_code) do |c|
        c.code_is_not = 200
        c.host = 'localhost'
        c.path = '/pulse'
        c.port = 8000
        c.timeout = 5.seconds
        c.interval = 20.seconds
      end
    end
  

Also make sure to give your mongrels a nice grace period.

  
    ...
    w.start_grace = 90.seconds
    w.restart_grace = 90.seconds
    ...
  

For a complete god configuration example, check out my god_examples project and the included sample rails god config.

License

Released under Ruby’s license