Module: ActiveMetrics::Instrumentable
- Defined in:
- lib/active_metrics/instrumentable.rb
Overview
Custom metrics for Librato
Instance Method Summary collapse
-
#count(event, number = 1) ⇒ Object
Count log lines are used to submit increments to Librato.
-
#measure(event, value = 0) ⇒ Object
Measure log lines are used to submit individual measurements that comprise a statistical distribution.
-
#sample(key, value) ⇒ Object
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.
Instance Method Details
#count(event, number = 1) ⇒ Object
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.
13 14 15 |
# 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) ⇒ Object
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. #=> 'baz'
end
For convenience, when measure is used with a block it will return the value returned by the block.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# 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) ⇒ Object
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.
63 64 65 |
# File 'lib/active_metrics/instrumentable.rb', line 63 def sample(key, value) ActiveMetrics::Collector.record(key, { metric: 'sample', value: value }) end |