module AppOptics::Metrics::Processor

Mixin which provides common logic between {Queue} and {Aggregator} objects.

Constants

MEASUREMENTS_PER_REQUEST

Attributes

last_submit_time[R]
per_request[R]
prefix[RW]
tags[RW]

Public Instance Methods

client() click to toggle source

The current Client instance this queue is using to authenticate and connect to Appoptics. This will default to the primary client used by the AppOptics::Metrics module unless it has been set to something else.

@return [AppOptics::Metrics::Client]

# File lib/appoptics/metrics/processor.rb, line 24
def client
  @client ||= AppOptics::Metrics.client
end
has_tags?() click to toggle source
# File lib/appoptics/metrics/processor.rb, line 28
def has_tags?
  !@tags.empty?
end
Also aliased as: tags?
persister() click to toggle source

The object this MetricSet will use to persist

# File lib/appoptics/metrics/processor.rb, line 35
def persister
  @persister ||= create_persister
end
submit() click to toggle source

Persist currently queued metrics

@return Boolean

# File lib/appoptics/metrics/processor.rb, line 42
def submit
  return true if self.empty?
  options = {per_request: @per_request}
  if persister.persist(self.client, self.queued, options)
    @last_submit_time = Time.now
    clear and return true
  end
  false
rescue ClientError
  # clean up if we hit exceptions if asked to
  clear if @clear_on_failure
  raise
end
tags?()
Alias for: has_tags?
time(name, options={}) { || ... } click to toggle source

Capture execution time for a block and queue it as the value for a metric. Times are recorded in milliseconds.

Options are the same as for add.

@example Queue API request response time

queue.time :api_request_time do
  # API request..
end

@example Queue API request response time w/ source

queue.time :api_request_time, source: 'app1' do
  # API request..
end

@param [Symbol|String] name Metric name @param [Hash] options Metric options

# File lib/appoptics/metrics/processor.rb, line 74
def time(name, options={})
  start = Time.now
  yield.tap do
    duration = (Time.now - start) * 1000.0 # milliseconds
    metric = {name => options.merge({value: duration})}
    add metric
  end