Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.

Commit c1d1424

Browse files
committed
Merge pull request #103 from librato/feature/composites
Feature/composites
2 parents a036a00 + 3f5a8a4 commit c1d1424

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,11 @@ Get the 20 most recent 15 minute data point rollups for `temperature`:
212212

213213
data = Librato::Metrics.get_measurements :temperature, :count => 20, :resolution => 900
214214

215-
There are many more options supported for querying, take a look at the [REST API docs](http://dev.librato.com/v1/get/metrics/:name) or the [`get_metric`](http://rubydoc.info/github/librato/librato-metrics/master/Librato/Metrics/Client#get_metric-instance_method)/[`get_measurements`](http://rubydoc.info/github/librato/librato-metrics/master/Librato/Metrics/Client#get_measurements-instance_method) documentation for more details.
215+
Get the 5 minute moving average for `temperature` for the last hour, assuming temperature is submitted once per minute:
216+
217+
data = Librato::Metrics.get_composite 'moving_average(mean(series("temperature", "*"), {size: "5"}))', :start_time => Time.now.to_i - 60*60, :resolution => 300
218+
219+
There are many more options supported for querying, take a look at the [REST API docs](http://dev.librato.com/v1/get/metrics/:name) or the individual method documentation for more details.
216220

217221
## Setting Metric Properties
218222

lib/librato/metrics.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ module Metrics
7676
:api_endpoint=, :authenticate, :connection,
7777
:faraday_adapter, :faraday_adapter=,
7878
:persistence, :persistence=, :persister,
79-
:get_metric, :get_measurements, :metrics,
79+
:get_composite, :get_metric, :get_measurements, :metrics,
8080
:delete_metrics, :update_metric, :update_metrics,
8181
:submit,
8282
:sources, :get_source, :update_source,

lib/librato/metrics/client.rb

+24
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,30 @@ def fetch(metric, options={})
163163
options.empty? ? metric : metric["measurements"]
164164
end
165165

166+
# Retrieve measurements for a given composite metric definition.
167+
# :start_time and :resolution are required options, :end_time is
168+
# optional.
169+
#
170+
# @example Get 5m moving average of 'foo'
171+
# measurements = Librato::Metrics.get_composite
172+
# 'moving_average(mean(series("foo", "*"), {size: "5"}))',
173+
# :start_time => Time.now.to_i - 60*60, :resolution => 300
174+
#
175+
# @param [String] definition Composite definition
176+
# @param [hash] options Query options
177+
def get_composite(definition, options={})
178+
unless options[:start_time] && options[:resolution]
179+
raise "You must provide a :start_time and :resolution"
180+
end
181+
query = options.dup
182+
query[:compose] = definition
183+
url = connection.build_url("metrics", query)
184+
response = connection.get(url)
185+
parsed = SmartJSON.read(response.body)
186+
# TODO: pagination support
187+
parsed
188+
end
189+
166190
# Retrieve a specific metric by name, optionally including data points
167191
#
168192
# @example Get attributes for a metric

0 commit comments

Comments
 (0)