Hcheck

Build Status

Configuration driven health checker for ruby apps. Can be mounted or booted as standalone app.

Installation

Add this line to your application's Gemfile:

gem 'hcheck'

And then execute:

$ bundle

Or install it yourself as:

$ gem install hcheck

Usage

To run as standalone server:

  hcheck -c path/to/hcheck.yml
  hcheck # looks for hcheck.yml in current project root path

Usage in rails:

  # routes.rb
  mount Hcheck::Status => '/hcheck' # Needs hcheck.yml in config directory.

Example hcheck.yml

postgresql:
  check: App Main Store # Name of the check
  host: localhost
  port: 5432
  username: root
  password:
  database: postgres

A complex hcheck.yml

postgresql:
  check: App Main Store
  host: <%= ENV['PG_HOST'] %>
  port: 5432
  username: <%= `whoami` %>
  password: <%= ENV['PG_PASSWORD'] %>
  database: <%= ENV['PG_DBNAME'] %>
redis:
  - check: App Main Cache
    url: redis://localhost:6379
    db: hcheck
    password:
  - check: Delayed Jobs Store
    url: redis://mymaster
    db: hcheck
    password:
    role: master
    sentinels:
      - host: localhost
        port: 26379
      - host: localhost
        port: 26380
mongodb:
  check: Mongo DB
  hosts:
    - localhost:27017
  user:
  password:
mysql:
  check: Mysql Connection
  host: localhost
  username: localuser
  password: password
rabbitmq:
  check: Rabbit Main
  host: localhost
  port: 5672
  user: guest
  pass: guest
ping:
  check: Main App Home
  url: http://127.0.0.1:3033/

check key refers to name or description than can be given to a check.

There is also a generator available if you fancy it: hcheck g:config, generates a sample hcheck yaml config file for you.

Authenticated Hcheck

Basic token based authentication can be enabled if desired. Env variable HCHECK_SECURE can set set to protect the hcheck path and HCHECK_ACCESS_TOKENcan be used to set token. Token can then sent as token get params, like /hcheck?token=xxx. Authentication failure will render 401.

Dependencies

The checks are implemented with the help of available gems. Postgresql check require pg gem, redis requires redis and so on. Check out individual module files in lib/hcheck/checks to see what and how they are being required.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment. Run rubocop to smash all silly errors and style deficiencies.

The checks during test loads the environmental settings from spec/.env for helping with testing in local machine.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Todo

Travis CI Integrations

  • ~~Github PR status~~
  • ~~Continuous Integration~~
  • Continuous release to RubyGems

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/rohitrox/hcheck.

License

The gem is available as open source under the terms of the MIT License.