OpenTracing instrumentation for Rails using ActiveSupport notifications. All events currently instrumented by ActiveSupport are available to trace.
- Rails 5.2.x, 5.1.x, 5.0.x, 4.2.x
Add this line to your application's Gemfile:
gem 'signalfx-rails-instrumentation'
And then execute:
$ bundle
Or install it yourself as:
$ gem install signalfx-rails-instrumentation
require 'rails/instrumentation'
tracer_impl = SomeTracerImplementation.new
Rails::Instrumentation.instrument(tracer: tracer,
exclude_events: [])
instrument
takes these optional named arguments:
tracer
: OpenTracing tracer to be used for this instrumentation- Default:
OpenTracing.global_tracer
- Default:
exclude_events
: Some events may be too noisy or they may simply not be necessary. These can be passed in as an array, and the instrumentation will not subscribe to those events. The available events can be found in the Instrumented Events section.- Default:
[]
- Example:
['sql.active_record', 'read_fragment.action_controller']
- Default:
All instrumentation can be removed:
Rails::Instrumentation.uninstrument
This will clear all subscribers registered by this instrumentation.
Events that have additional useful information in the payload will have additional tags on their span, as listed below.
For more information about each event, please look at the ActiveSupport notifications documentation.
Event | Span Tag Names |
---|---|
write_fragment.action_controller | key.write |
read_fragment.action_controller | key.read |
expire_fragment.action_controller | key.expire |
exist_fragment?.action_controller | key.exist |
write_page.action_controller | path.write |
expire_page.action_controller | path.expire |
start_processing.action_controller | controller controller.action request.params request.format http.method http.url |
process_action.action_controller | controller controller.action request.params request.format http.method http.url http.status_code view.runtime_ms db.runtime_ms |
send_file.action_controller | path.send |
send_data.action_controller | |
redirect_to.action_controller | http.status_code redirect.url |
halted_callback.action_controller | filter |
unpermitted_parameters.action_controller | unpermitted_keys |
Event | Span Tag Names |
---|---|
render_tempate.action_view | template.identifier template.layout |
render_partial.action_view | partial.identifier |
render_collection.action_view | template.identifier template.count template.cache_hits |
Event | Span Tag Names |
---|---|
sql.active_record | db.statement name connection_id binds cached |
instantiation.active_record | record.count record.class |
Event | Span Tag Names |
---|---|
receive.action_mailer | mailer message.id message.subject message.to message.from message.bcc message.cc message.date message.body |
deliver.action_mailer | mailer message.id message.subject message.to message.from message.bcc message.cc message.date message.body |
process.action_mailer | mailer action args |
Event | Span Tag Names |
---|---|
cache_read.active_support | key hit super_operation |
cache_generate.active_support | key |
cache_fetch_hit.active_support | key |
cache_write.active_support | key |
cache_delete.active_support | key |
cache_exist?.active_support | key |
Event | Span Tag Names |
---|---|
enqueue_at.active_job | adapter job |
enqueue.active_job | adapter job |
perform_start.active_job | adapter job |
perform.active_job | adapter job |
Event | Span Tag Names |
---|---|
perform_action.action_cable | channel_class action data |
transmit.action_cable | channel_class data via |
transmit_subscription_confirmation.action_cable | channel_class |
transmit_subscription_rejection.action_cable | channel_class |
broadcast.action_cable | broadcasting message coder |
Event | Span Tag Names |
---|---|
service_upload.active_storage | key service checksum |
service_streaming_download.active_storage | key service |
service_download.active_storage | key service |
service_delete.active_storage | key service |
service_delete_prefixed.active_storage | key.prefix service |
service_exist.active_storage | key service exist |
service_url.active_storage | key service url |
After checking out the repo, run bin/setup
to install dependencies. You can also run bin/console
for an interactive prompt that will allow you to experiment.
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.
Bug reports and pull requests are welcome on GitHub at https://github.com/signalfx/ruby-rails-instrumentation.