Errplane

Build Status

This gem integrates your applications with Errplane, a cloud-based tool for handling exceptions, log aggregation, uptime monitoring, and alerting.

This gem currently has support for Ruby on Rails (3.x), Sinatra, Resque, and Capistrano.

Support

Running into any issues? Get in touch with us at [email protected].

Rails 3.x Installation

Start by adding the gem to your Gemfile:

gem "errplane"

Then, issue the following commands in your application's root directory:

bundle
rails g errplane your-api-key-goes-here

This will create config/initializers/errplane.rb for you automatically. If you want to make sure that everything's working correctly, just run:

bundle exec rake errplane:test

You should be able to view the exception at http://errplane.com and also receive an email notification of the test exception.

Rails 2.3.x Installation

Start by adding the gem to your Gemfile:

gem "errplane"

Then, issue the following commands in your application's root directory:

bundle
script/generate errplane --api-key your-api-key-goes-here

This will create config/initializers/errplane.rb for you automatically. If you want to make sure that everything's working correctly, just run:

bundle exec rake errplane:test

You should be able to view the exception at http://errplane.com and also receive an email notification of the test exception.

Capistrano Integration

In your config/deploy.rb, add the following line:

require 'errplane/capistrano'

This will automatically pull your API key from the Rails initializer and notify Errplane of every deployment.

Sinatra Integration

Here is a simple sinatra example app. With Sinatra you need to create an application first in the web site

require 'sinatra'
require 'errplane'

Errplane.configure do |config|
  config.api_key = "<API KEY HERE>"
  config.application_id = "<APP KEY HERE>"
  config.ignored_environments = ["development"]
end


get '/test_error' do
  raise "hello"
  "Hello World!"
end

Resque Integration With Multiple Failure Backends

This gem also supports notifications from failed Resque jobs. Just add the following to the an initializer, such as config/initializers/resque.rb:

require 'resque/failure/multiple'
require 'resque/failure/redis'
require 'errplane/resque'

Resque::Failure::Multiple.classes = [Resque::Failure::Redis, Resque::Failure::Errplane]
Resque::Failure.backend = Resque::Failure::Multiple

Assuming this is running from within a normal Rails project, the values provided in config/initializers/errplane.rb will make sure that the Resque backend is set up correctly.

Customizing How Exceptions Get Grouped and Sending Additional Data

The Errplane API will automatically attempt to group exceptions and threshold alerts based on a SHA hash of the exception class name and the first line of the backtrace. This works for some cases, but may be too noisy for failures that occur in different spots in your application that mean the same thing. This gem includes functionality to define a hash yourself to modify how exception groupings are made. That can be done by modifying config/initializers/resque.rb:

require 'digest/sha1'

Errplane.configure do |config|
  config.define_custom_exception_data do |black_box|
    if black_box.exception.class ==  ZeroDivisionError
      black_box.hash = Digest::SHA1.hexdigest("ZeroDivisionError")
      black_box.custom_data[:extra_info] = "maths"
    end
  end
end

That example will ensure that any divide by zero errors in your application will be grouped together, while all other exceptions will be grouped by the normal logic. The custom_exception_data block gets yielded an Errplane::BlackBox object. Through that object you can access exception information, request information, and custom data. You can also add custom data that can be viewed later in Errplane. This is useful if you want to capture additional context that we haven't already thought of including. When setting custom_data.hash it should always be some sort of digest like SHA1 used in the above example.

Chef Support

We currently only support Exception notification on Chef. See our wiki(https://github.com/errplane/docs/wiki/Chef-Integration) for details.

Contributing

We love contributions. Want to add support for something you don't already see here? Fork this repository and send us a pull request.

Copyright (c) 2012 Errplane, Inc.