class ScoutApm::StoreReportingPeriod
One period of Storage. Typically 1 minute
Attributes
db_query_metric_set[R]
external_service_metric_set[R]
histograms[R]
An Array of HistogramsReport
job_traces[R]
A ScoredItemSet
holding the “best” traces for the period
metric_set[R]
request_traces[R]
A ScoredItemSet
holding the “best” traces for the period
timestamp[R]
A StoreReportingPeriodTimestamp
representing the time that this collection of metrics is for
Public Class Methods
new(timestamp, context)
click to toggle source
# File lib/scout_apm/store.rb, line 218 def initialize(timestamp, context) @timestamp = timestamp @request_traces = ScoredItemSet.new(context.config.value('max_traces')) @job_traces = ScoredItemSet.new(context.config.value('max_traces')) @histograms = [] @metric_set = MetricSet.new @db_query_metric_set = DbQueryMetricSet.new(context) @external_service_metric_set = ExternalServiceMetricSet.new(context) @jobs = Hash.new end
Public Instance Methods
absorb_metrics!(metrics)
click to toggle source
For absorbing an array of metric {Meta => Stat} records
# File lib/scout_apm/store.rb, line 251 def absorb_metrics!(metrics) metric_set.absorb_all(metrics) self end
db_query_metrics_payload()
click to toggle source
# File lib/scout_apm/store.rb, line 331 def db_query_metrics_payload db_query_metric_set.metrics_to_report end
external_service_metrics_payload()
click to toggle source
# File lib/scout_apm/store.rb, line 335 def external_service_metrics_payload external_service_metric_set.metrics_to_report end
jobs()
click to toggle source
# File lib/scout_apm/store.rb, line 323 def jobs @jobs.values end
merge(other)
click to toggle source
Merges another StoreReportingPeriod
into this one
# File lib/scout_apm/store.rb, line 234 def merge(other) self. merge_metrics!(other.metric_set). merge_slow_transactions!(other.slow_transactions_payload). merge_jobs!(other.jobs). merge_slow_jobs!(other.slow_jobs_payload). merge_histograms!(other.histograms). merge_db_query_metrics!(other.db_query_metric_set). merge_external_service_metrics!(other.external_service_metric_set) self end
merge_db_query_metrics!(other_metric_set)
click to toggle source
# File lib/scout_apm/store.rb, line 263 def merge_db_query_metrics!(other_metric_set) db_query_metric_set.combine!(other_metric_set) self end
merge_external_service_metrics!(other_metric_set)
click to toggle source
# File lib/scout_apm/store.rb, line 268 def merge_external_service_metrics!(other_metric_set) external_service_metric_set.combine!(other_metric_set) self end
merge_histograms!(new_histograms)
click to toggle source
# File lib/scout_apm/store.rb, line 301 def merge_histograms!(new_histograms) new_histograms = Array(new_histograms) @histograms = (histograms + new_histograms). group_by { |histo| histo.name }. map { |(_, histos)| histos.inject { |merged, histo| merged.combine!(histo) } } self end
merge_jobs!(jobs)
click to toggle source
# File lib/scout_apm/store.rb, line 281 def merge_jobs!(jobs) Array(jobs).each do |job| if @jobs.has_key?(job) @jobs[job].combine!(job) else @jobs[job] = job end end self end
merge_metrics!(other_metric_set)
click to toggle source
For merging when you have another metric_set
object Makes sure that you don't duplicate error count records
# File lib/scout_apm/store.rb, line 258 def merge_metrics!(other_metric_set) metric_set.combine!(other_metric_set) self end
merge_slow_jobs!(new_jobs)
click to toggle source
# File lib/scout_apm/store.rb, line 293 def merge_slow_jobs!(new_jobs) Array(new_jobs).each do |job| job_traces << job end self end
merge_slow_transactions!(new_transactions)
click to toggle source
# File lib/scout_apm/store.rb, line 273 def merge_slow_transactions!(new_transactions) Array(new_transactions).each do |one_transaction| request_traces << one_transaction end self end
metrics_payload()
click to toggle source
Retrieve Metrics for reporting
# File lib/scout_apm/store.rb, line 315 def metrics_payload metric_set.metrics end
request_count()
click to toggle source
Debug
Helpers
# File lib/scout_apm/store.rb, line 343 def request_count metrics_payload. select { |meta,stats| meta.metric_name =~ /\AController/ }. inject(0) {|sum, (_, stat)| sum + stat.call_count } end
slow_jobs_payload()
click to toggle source
# File lib/scout_apm/store.rb, line 327 def slow_jobs_payload job_traces.to_a end
slow_transactions_payload()
click to toggle source
# File lib/scout_apm/store.rb, line 319 def slow_transactions_payload request_traces.to_a end