module ActiveRecord::RailsOpentracer
Constants
- DEFAULT_OPERATION_NAME
Public Class Methods
disable()
click to toggle source
# File lib/rails_opentracer/active_record/rails_opentracer.rb, line 16 def disable if @subscriber ActiveSupport::Notifications.unsubscribe(@subscriber) @subscriber = nil end self end
Also aliased as: clear_subscribers
instrument(tracer: OpenTracing.global_tracer, active_span: nil)
click to toggle source
# File lib/rails_opentracer/active_record/rails_opentracer.rb, line 6 def instrument(tracer: OpenTracing.global_tracer, active_span: nil) clear_subscribers @subscriber = ::ActiveSupport::Notifications.subscribe('sql.active_record') do |*args| ActiveRecord::RailsOpentracer.sql(tracer: tracer, active_span: active_span, args: args) end self end
sql(tracer: OpenTracing.global_tracer, active_span: nil, args:)
click to toggle source
# File lib/rails_opentracer/active_record/rails_opentracer.rb, line 26 def sql(tracer: OpenTracing.global_tracer, active_span: nil, args:) _, start, finish, _, payload = *args span = start_span( payload.fetch(:name), tracer: tracer, active_span: active_span, start_time: start, sql: payload.fetch(:sql), cached: payload.fetch(:cached, false), connection_id: payload.fetch(:connection_id) ) if payload[:exception] ::RailsOpentracer::SpanHelpers.set_error(span, payload[:exception_object] || payload[:exception]) end span.finish(end_time: finish) end
start_span(operation_name, tracer: OpenTracing.global_tracer, active_span: nil, start_time: Time.now.utc, **fields)
click to toggle source
# File lib/rails_opentracer/active_record/rails_opentracer.rb, line 46 def start_span(operation_name, tracer: OpenTracing.global_tracer, active_span: nil, start_time: Time.now.utc, **fields) connection_config = ::ActiveRecord::Base.connection_config span = tracer.start_span( operation_name || DEFAULT_OPERATION_NAME, child_of: active_span.respond_to?(:call) ? active_span.call : active_span, start_time: start_time, tags: { 'component' => 'ActiveRecord', 'span.kind' => 'client', 'db.user' => connection_config.fetch(:username, 'unknown'), 'db.instance' => connection_config.fetch(:database), 'db.vendor' => connection_config.fetch(:adapter), 'db.connection_id' => fields.fetch(:connection_id, 'unknown'), 'db.cached' => fields.fetch(:cached, false), 'db.statement' => fields.fetch(:sql), 'db.type' => 'sql' } ) span end