Class: TingYun::Agent::Transaction::Apdex

Inherits:
Object
  • Object
show all
Defined in:
lib/ting_yun/agent/transaction/apdex.rb

Constant Summary collapse

APDEX_TXN_METRIC_PREFIX =
'Apdex/'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start, transaction_start) ⇒ Apdex

Returns a new instance of Apdex.



12
13
14
15
# File 'lib/ting_yun/agent/transaction/apdex.rb', line 12

def initialize(start, transaction_start)
  @apdex_start = (start || transaction_start).to_f
  @transaction_start_time = transaction_start
end

Instance Attribute Details

#apdex_startObject

Returns the value of attribute apdex_start.



10
11
12
# File 'lib/ting_yun/agent/transaction/apdex.rb', line 10

def apdex_start
  @apdex_start
end

#transaction_start_timeObject

Returns the value of attribute transaction_start_time.



10
11
12
# File 'lib/ting_yun/agent/transaction/apdex.rb', line 10

def transaction_start_time
  @transaction_start_time
end

Instance Method Details

#apdex_bucket(duration, failed, apdex_t) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ting_yun/agent/transaction/apdex.rb', line 34

def apdex_bucket(duration, failed, apdex_t)
  case
    when failed
      :apdex_f
    when duration <= apdex_t
      :apdex_s
    when duration <= 4 * apdex_t
      :apdex_t
    else
      :apdex_f
  end
end

#queue_timeObject



47
48
49
# File 'lib/ting_yun/agent/transaction/apdex.rb', line 47

def queue_time
  @transaction_start_time - @apdex_start
end

#record_apdex(metric_name, end_time, failed) ⇒ Object



17
18
19
20
21
22
# File 'lib/ting_yun/agent/transaction/apdex.rb', line 17

def record_apdex(metric_name, end_time, failed)
  total_duration = TingYun::Helper.time_to_millis(end_time - apdex_start)
  if TingYun::Agent::Transaction.recording_web_transaction?
    record_apdex_metrics(APDEX_TXN_METRIC_PREFIX, total_duration, TingYun::Agent.config[:apdex_t], metric_name, failed)
  end
end

#record_apdex_metrics(transaction_prefix, total_duration, current_apdex_t, metric_name, failed) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/ting_yun/agent/transaction/apdex.rb', line 24

def record_apdex_metrics(transaction_prefix, total_duration, current_apdex_t, metric_name, failed)
  return unless current_apdex_t
  return unless metric_name.start_with?(CONTROLLER_PREFIX)

  apdex_bucket_global = apdex_bucket(total_duration, failed, current_apdex_t)
  txn_apdex_metric = metric_name.sub(/^[^\/]+\//, transaction_prefix)
  ::TingYun::Agent::Transaction.metrics.record_unscoped(txn_apdex_metric, apdex_bucket_global, current_apdex_t)
end