Class: HeimdallApm::Visitors::RequestMetricsVisitor

Inherits:
Object
  • Object
show all
Defined in:
lib/heimdall_apm/visitors/request_metrics_visitor.rb

Overview

Extract metrics for a given transaction

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(vault, transaction) ⇒ RequestMetricsVisitor

Returns a new instance of RequestMetricsVisitor.



11
12
13
14
15
# File 'lib/heimdall_apm/visitors/request_metrics_visitor.rb', line 11

def initialize(vault, transaction)
  @transaction = transaction
  @vault   = vault
  @metrics = {}
end

Instance Attribute Details

#metricsObject (readonly)

Returns the value of attribute metrics.



9
10
11
# File 'lib/heimdall_apm/visitors/request_metrics_visitor.rb', line 9

def metrics
  @metrics
end

Instance Method Details

#store_in_vaultObject



25
26
27
28
# File 'lib/heimdall_apm/visitors/request_metrics_visitor.rb', line 25

def store_in_vault
  timestamp = @transaction.root_segment.stop_time
  @vault.store_transaction_metrics(@transaction, metrics)
end

#visit(segment) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/heimdall_apm/visitors/request_metrics_visitor.rb', line 17

def visit(segment)
  name = ::HeimdallApm::MetricName.new(segment.type, segment.name)
  @metrics[name] ||= ::HeimdallApm::MetricStats.new

  stat = @metrics[name]
  stat.update(segment.total_call_time, segment.total_exclusive_time)
end