module ActiveMetrics::Instrumentable

Custom metrics for Librato

Public Instance Methods

count(event, number = 1) click to toggle source

Count log lines are used to submit increments to Librato.

You can submit increments as frequently as desired and every minute the current total will be flushed to Librato and reset to zero.

@param event [String] The name of the event @param number [Integer] The number to increment the current count (defaults to 1)

# File lib/active_metrics/instrumentable.rb, line 13
def count(event, number = 1)
  ActiveMetrics::Collector.record(event, { metric: 'count', value: number })
end
measure(event, value = 0) { || ... } click to toggle source

Measure log lines are used to submit individual measurements that comprise a statistical distribution. The most common use case are timings i.e. latency measurements, but it can also be used to represent non-temporal distributions such as counts.

You can submit as many measures as you’d like (typically they are submitted per-request) and every minute Librato will calculate/record a complete set of summary statistics over the measures submitted in that interval.

The `measure` method also accepts a block of code which will automatically measure the amount of time spent running that block:

measure 'foo.bar.baz' do
  Foo.bar #=> 'baz'
end

For convenience, when `measure` is used with a block it will return the value returned by the block.

@param event [String] The name of the event @param value [Integer, String] The value measured.

# File lib/active_metrics/instrumentable.rb, line 39
def measure(event, value = 0)
  if block_given?
    time = Time.now
    # Store the value returned by the block for future reference
    value = yield
    delta = Time.now - time

    ActiveMetrics::Collector.record(event, { metric: 'measure', value: delta })

    value
  else
    ActiveMetrics::Collector.record(event, { metric: 'measure', value: value })
  end
end
sample(key, value) click to toggle source

Sample metrics are used to convey simple key/numerical value pairs when you are already calculating some kind of summary statistic in your app and merely need a simple transport mechanism to Librato.

Typically you would submit sample metrics on some periodic tick and set said period on the metric in Librato.

@param key [String] The name of the sample @param value [Object] The value of the sample

# File lib/active_metrics/instrumentable.rb, line 63
def sample(key, value)
  ActiveMetrics::Collector.record(key, { metric: 'sample', value: value })
end