Class: OneApm::MetricData
- Inherits:
-
Object
- Object
- OneApm::MetricData
show all
- Includes:
- Coerce
- Defined in:
- lib/one_apm/metrics/metric_data.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Coerce
#event_params, #float, #int, #int_or_nil, #log_failure, #string
Constructor Details
#initialize(metric_spec, stats, metric_id) ⇒ MetricData
14
15
16
17
18
|
# File 'lib/one_apm/metrics/metric_data.rb', line 14
def initialize(metric_spec, stats, metric_id)
@metric_spec = metric_spec
self.stats = stats
self.metric_id = metric_id
end
|
Instance Attribute Details
#metric_id ⇒ Object
nil or a cached integer ID for the metric from the collector.
10
11
12
|
# File 'lib/one_apm/metrics/metric_data.rb', line 10
def metric_id
@metric_id
end
|
#metric_spec ⇒ Object
nil, or a OneApm::MetricSpec object if we have no cached ID
8
9
10
|
# File 'lib/one_apm/metrics/metric_data.rb', line 8
def metric_spec
@metric_spec
end
|
#stats ⇒ Object
the actual statistics object
12
13
14
|
# File 'lib/one_apm/metrics/metric_data.rb', line 12
def stats
@stats
end
|
Instance Method Details
#eql?(o) ⇒ Boolean
20
21
22
|
# File 'lib/one_apm/metrics/metric_data.rb', line 20
def eql?(o)
(metric_spec.eql? o.metric_spec) && (stats.eql? o.stats)
end
|
#hash ⇒ Object
35
36
37
|
# File 'lib/one_apm/metrics/metric_data.rb', line 35
def hash
metric_spec.hash ^ stats.hash
end
|
#inspect ⇒ Object
52
53
54
|
# File 'lib/one_apm/metrics/metric_data.rb', line 52
def inspect
"#<MetricData metric_spec:#{metric_spec.inspect}, stats:#{stats.inspect}, metric_id:#{metric_id.inspect}>"
end
|
#original_spec ⇒ Object
24
25
26
|
# File 'lib/one_apm/metrics/metric_data.rb', line 24
def original_spec
@original_spec || @metric_spec
end
|
#to_collector_array(encoder = nil) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/one_apm/metrics/metric_data.rb', line 58
def to_collector_array(encoder=nil)
stat_key = metric_id || { 'name' => metric_spec.name, 'scope' => metric_spec.scope }
[ stat_key,
[
int(stats.call_count, stat_key),
float(stats.total_call_time, stat_key),
float(stats.total_exclusive_time, stat_key),
float(stats.min_call_time, stat_key),
float(stats.max_call_time, stat_key),
float(stats.sum_of_squares, stat_key)
]
]
end
|
#to_json(*a) ⇒ Object
Serialize with all attributes, but if the metric id is not nil, then don't send the metric spec
40
41
42
|
# File 'lib/one_apm/metrics/metric_data.rb', line 40
def to_json(*a)
%Q[{"metric_spec":#{metric_id ? 'null' : metric_spec.to_json},"stats":{"total_exclusive_time":#{stats.total_exclusive_time},"min_call_time":#{stats.min_call_time},"call_count":#{stats.call_count},"sum_of_squares":#{stats.sum_of_squares},"total_call_time":#{stats.total_call_time},"max_call_time":#{stats.max_call_time}},"metric_id":#{metric_id ? metric_id : 'null'}}]
end
|
#to_s ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/one_apm/metrics/metric_data.rb', line 44
def to_s
if metric_spec
"#{metric_spec.name}(#{metric_spec.scope}): #{stats}"
else
"#{metric_id}: #{stats}"
end
end
|