Common initializers for logging and monitoring across Airhelp Rails projects:
- lograge - for readable rails http logs
- sidekiq statsd middleware - for sidekiq stats
Add this line to your application's Gemfile:
gem 'ah-lograge', git: 'https://github.com/AirHelp/ah-lograge'
And then execute:
$ bundle
Just install it. You can pass env variable DISABLE_LOGRAGE
to disable it.
add config/initializers/lograge.rb
to your app with following:
Ah::Lograge.filter_params do |params|
params.delete("unwanted")
end
in config/initializers/lograge.rb
add something like:
Ah::Lograge.additional_custom_entries do |event|
{ something: event.payload[:something] }
end
The middleware requires sidekiq and statsd-ruby to operate (it needs to be provided in application gemfile). It will report various sidekiq metrics via statsd. There is a penalty: job execution duration will be 0.08s longer (we can live with that). If statsd host fails it will not interrupt normal sidekiq operation.
require 'ah/lograge/sidekiq_statsd_server_middleware'
Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add Ah::Lograge::SidekiqStatsdServerMiddleware, statsd: Statsd.new(Settings.statsd_host)
end
end
by default all calls will be gathered and reported by hostname like:
Completed 200 OK in 3222ms (Views: 81.2ms | ActiveRecord: 204.4ms | Http(airspace.ahinternal.net): 1944.4ms | Http(herman-staging.ahinternal.net): 313.2ms)
if there is defined global variable $statsd
with Statsd client instance
it will be used to trace execution times and invocation counts
gem 'ah-lograge', require: ['ah/lograge/httparty']
class Gateway
include HTTParty
include Ah::Lograge::HTTParty::Instrumentation
end
Just create a PR & ping #dev-room or our developers email.
The gem is available as open source under the terms of the MIT License.