ElasticNotifier
ElasticNotifier gem provides a simple API to send error notifications to an Elastic Search instance.
It can also be used as plug-in for exception_notification gem to send error notifications caught by the Rack middleware.
Installation
Add this line to your application's Gemfile:
gem 'elastic_notifier'
And then execute:
$ bundle
Or install it yourself as:
$ gem install elastic_notifier
Usage
NOTIFIER = ElasticNotifier.new(
url: "http://myserver.com:9200", # default is http://localhost:9200
index: "my_custom_index", # default is :elastic_notifier
type: "my_document_type" # default is :signals
)
For Rails applications you can add the code above to config/initializers/elastic_notifier.rb
so it will be available throghout the app.
Then send error notifications as you rescue errors:
begin
# some code that raises an exception
rescue => error
NOTIFIER.notify_error(error)
end
As ExceptionNotification's Plugin
If you are already using exception_notification gem within a Rails app you can use ElasticNotifier out of the box.
In config/initializers/elastic_notifier.rb
, after initializing the notifier object as described above, you need to register it as documented here.
notifier = ElasticNotifier.new(url: "http://myserver.com:9200")
ExceptionNotifier.add_notifier :elastic_search, notifier
What information is being sent?
At the time the notifier is invoked it collects some information from the environment, serializes it together with the exception details and sent it to the Elastic instance.
{
severity: "error",
timestamp: "2017-12-31 23:59:59",
program_name: "my_app.rb",
pid: 1345,
hostname: "myservicename",
ip: "123.123.123.123",
data: {
name: "NoMethodError",
message: "undefined method `test` for nil:NilClass",
backtrace: [...]
}
}
It is possible to override parameters such as program_name
which will remain static for the notifier instance.
notifier = ElasticNotifier.new(url: "http://myserver.com:9200", program_name: "custom_name")
Contributing
Bug reports and pull requests are very welcome. Please be aware that you are expected to follow the code of conduct.
License
Copyright (c) 2017 Fabio Pitino, released under the MIT license.