class ScoutApm::MetricSet
Constants
- PASSTHROUGH_METRICS
-
We can’t aggregate a handful of things like samplers (CPU, Memory), or Controller, and Percentiles so pass through these metrics directly
TODO: Figure out a way to not have this duplicate what’s in Samplers, and also on server’s ingest
Attributes
Public Class Methods
Public Instance Methods
Source
# File lib/scout_apm/metric_set.rb, line 20 def absorb(metric) meta, stat = metric if PASSTHROUGH_METRICS.include?(meta.type) # Leave as-is, don't attempt to combine into an /all key @metrics[meta] ||= MetricStats.new @metrics[meta].combine!(stat) elsif meta.type == "Errors" # Sadly special cased, we want both raw and aggregate values # When combining MetricSets between different @metrics[meta] ||= MetricStats.new @metrics[meta].combine!(stat) if !@combine_in_progress agg_meta = MetricMeta.new("Errors/Request", :scope => meta.scope) @metrics[agg_meta] ||= MetricStats.new @metrics[agg_meta].combine!(stat) end else # Combine down to a single /all key agg_meta = MetricMeta.new("#{meta.type}/all", :scope => meta.scope) @metrics[agg_meta] ||= MetricStats.new @metrics[agg_meta].combine!(stat) end end
Absorbs a single new metric into the aggregates
Source
# File lib/scout_apm/metric_set.rb, line 15 def absorb_all(metrics) Array(metrics).each { |m| absorb(m) } end
Source
# File lib/scout_apm/metric_set.rb, line 48 def combine!(other) @combine_in_progress = true absorb_all(other.metrics) @combine_in_progress = false self end
Sets a combine_in_progress flag to prevent double-counting Error
metrics. Without it, the Errors/Request number would be increasingly off as metric_sets get merged in.
Source
# File lib/scout_apm/metric_set.rb, line 56 def eql?(other) metrics == other.metrics end
Also aliased as: ==