Module: Librato::Metrics::Processor

Included in:
Aggregator, Queue
Defined in:
lib/librato/metrics/processor.rb

Overview

Mixin which provides common logic between Queue and Aggregator objects.

Constant Summary

MEASUREMENTS_PER_REQUEST =
500

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Instance Attribute Details

- (Object) last_submit_time (readonly)

Returns the value of attribute last_submit_time



9
10
11
# File 'lib/librato/metrics/processor.rb', line 9

def last_submit_time
  @last_submit_time
end

- (Object) per_request (readonly)

Returns the value of attribute per_request



9
10
11
# File 'lib/librato/metrics/processor.rb', line 9

def per_request
  @per_request
end

- (Object) prefix

Returns the value of attribute prefix



10
11
12
# File 'lib/librato/metrics/processor.rb', line 10

def prefix
  @prefix
end

Instance Method Details

- (Librato::Metrics::Client) client

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



18
19
20
# File 'lib/librato/metrics/processor.rb', line 18

def client
  @client ||= Librato::Metrics.client
end

- (Object) persister

The object this MetricSet will use to persist



24
25
26
# File 'lib/librato/metrics/processor.rb', line 24

def persister
  @persister ||= create_persister
end

- (Object) submit

Persist currently queued metrics

Returns:

  • Boolean



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/librato/metrics/processor.rb', line 31

def submit
  return true if self.queued.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

- (Object) time(name, options = {}) Also known as: benchmark

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.

Examples:

Queue API request response time

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

Queue API request response time w/ source

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

Parameters:

  • name (Symbol|String)

    Metric name

  • options (Hash) (defaults to: {})

    Metric options



63
64
65
66
67
68
69
70
# File 'lib/librato/metrics/processor.rb', line 63

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
end