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