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 collapse

MEASUREMENTS_PER_REQUEST =
500

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#last_submit_timeObject (readonly)

Returns the value of attribute last_submit_time.



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

def last_submit_time
  @last_submit_time
end

#per_requestObject (readonly)

Returns the value of attribute per_request.



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

def per_request
  @per_request
end

#prefixObject

Returns the value of attribute prefix.



12
13
14
# File 'lib/librato/metrics/processor.rb', line 12

def prefix
  @prefix
end

#tagsObject

Returns the value of attribute tags.



12
13
14
# File 'lib/librato/metrics/processor.rb', line 12

def tags
  @tags
end

Instance Method Details

#clientLibrato::Metrics::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.



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

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

#has_tags?Boolean Also known as: tags?

Returns:

  • (Boolean)


28
29
30
# File 'lib/librato/metrics/processor.rb', line 28

def has_tags?
  !@tags.empty?
end

#persisterObject

The object this MetricSet will use to persist



35
36
37
# File 'lib/librato/metrics/processor.rb', line 35

def persister
  @persister ||= create_persister
end

#submitObject

Persist currently queued metrics

Returns:

  • Boolean



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/librato/metrics/processor.rb', line 42

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

#time(name, options = {}) ⇒ Object 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



74
75
76
77
78
79
80
81
# File 'lib/librato/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
end