rails-engine/status-page

 
 

Repository files navigation

Gem VersionBuild StatusDependency StatusCoverage Status

Mountable status page for your Rails application, to check (DB, Cache, Sidekiq, Redis, etc.).

Mounting this gem will add a '/status' route to your application, which can be used for health monitoring the application and its various services. The method will return an appropriate HTTP status as well as a JSON array representing the state of each service.

# Gemfile
gem 'status-page'

Then run:

$ bundle install
# config/routes.rb
mount StatusPage::Engine, at: '/'

The following services are currently supported:

  • DB
  • Cache
  • Redis
  • Sidekiq
  • Resque

By default, only the database check is enabled. You can add more service services by explicitly enabling them via an initializer:

StatusPage.configure do
  # Cache check status result 10 seconds
  self.interval = 10
  # Use service
  self.use :database
  self.use :cache
  self.use :redis
  # Custom redis url
  self.use :redis, url: 'redis://you-redis-host:3306/1'
  self.use :sidekiq
end

It's also possible to add custom health check services suited for your needs (of course, it's highly appreciated and encouraged if you'd contribute useful services to the project).

In order to add a custom service, you'd need to:

  • Implement the StatusPage::Services::Base class and its check! method (a check is considered as failed if it raises an exception):
class CustomService < StatusPage::Services::Base
  def check!
    raise 'Oh oh!'
  end
end
  • Add its class to the config:
StatusPage.configure do
  self.add_custom_service(CustomProvider)
end

If you need to perform any additional error handling (for example, for additional error reporting), you can configure a custom error callback:

StatusPage.configure do
  self.error_callback = proc do |e|
    logger.error "Health check failed with: #{e.message}"

    Raven.capture_exception(e)
  end
end

By default, the /status endpoint is not authenticated and is available to any user. You can authenticate using HTTP Basic Auth by providing authentication credentials:

StatusPage.configure do
  self.basic_auth_credentials = {
    username: 'SECRET_NAME',
    password: 'Shhhhh!!!'
  }
end

The MIT License (MIT)

About

Mountable status page for your Rails application, to check Cache, Redis, Sidekiq ...

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 83.5%
  • HTML 14.0%
  • JavaScript 1.3%
  • CSS 1.2%