class TingYun::Agent::Collector::SqlTrace

Attributes

action_metric_name[R]
params[R]
slow_sql[R]
sql[R]
uri[R]

Public Class Methods

new(normalized_query, slow_sql, action_name, uri) click to toggle source
Calls superclass method TingYun::Metrics::Stats::new
# File lib/ting_yun/agent/collector/sql_sampler/sql_trace.rb, line 19
def initialize(normalized_query, slow_sql, action_name, uri)
  super()
  @params = {}

  @action_metric_name = action_name
  @slow_sql = slow_sql
  @sql = normalized_query
  @uri = uri
  @params[:stacktrace] = slow_sql.backtrace
  record_data_point(float(slow_sql.duration))
end

Public Instance Methods

aggregate(slow_sql, action_name, uri) click to toggle source
# File lib/ting_yun/agent/collector/sql_sampler/sql_trace.rb, line 31
def aggregate(slow_sql, action_name, uri)
  duration = slow_sql.duration
  if duration > max_call_time
    @action_metric_name = action_name
    @slow_sql = slow_sql
    @uri = uri
    @params[:stacktrace] = slow_sql.backtrace
  end
  record_data_point(float(duration))
end
need_to_explain?() click to toggle source
# File lib/ting_yun/agent/collector/sql_sampler/sql_trace.rb, line 49
def need_to_explain?
  Agent.config[:'nbs.action_tracer.explain_enabled'] &&  @slow_sql.duration * 1000 > TingYun::Agent.config[:'nbs.action_tracer.explain_threshold']
end
prepare_to_send() click to toggle source
# File lib/ting_yun/agent/collector/sql_sampler/sql_trace.rb, line 43
def prepare_to_send
  @sql = @slow_sql.sql unless Agent.config[:'nbs.action_tracer.record_sql'].to_s == 'obfuscated'
  @params[:explainPlan] = @slow_sql.explain if need_to_explain?
end
to_collector_array(encoder) click to toggle source
# File lib/ting_yun/agent/collector/sql_sampler/sql_trace.rb, line 56
def to_collector_array(encoder)
  [
      @slow_sql.start_time,
      string(@action_metric_name),
      string(@slow_sql.metric_name),
      string(@uri||@action_metric_name),
      string(@sql),
      int(@call_count),
      TingYun::Helper.time_to_millis(@total_call_time),
      TingYun::Helper.time_to_millis(@max_call_time),
      TingYun::Helper.time_to_millis(@min_call_time),
      encoder.encode(@params)
  ]
end