librato-metrics 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data.tar.gz.sig CHANGED
Binary file
data/.travis.yml CHANGED
@@ -1,10 +1,10 @@
1
1
  rvm:
2
- - 1.8.7
3
- - ree
2
+ # - 1.8.7
3
+ # - ree
4
4
  - 1.9.2
5
5
  - 1.9.3
6
6
  - 2.0.0
7
- - 2.1.1
7
+ - 2.1.2
8
8
  - jruby-19mode
9
9
  # - rbx
10
10
  - ruby-head
@@ -15,4 +15,9 @@ matrix:
15
15
 
16
16
  branches:
17
17
  except:
18
- - /^v[0-9]/
18
+ - /^v[0-9]/
19
+
20
+ notifications:
21
+ email:
22
+ on_failure: change
23
+ on_success: never
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  ## Changelog
2
2
 
3
+ ### Version 1.5.0
4
+ * Add #get_composite for easier fetching of composite measurements
5
+
3
6
  ### Version 1.4.0
4
7
  * Add support for snapshots
5
8
 
data/Gemfile CHANGED
@@ -17,5 +17,19 @@ end
17
17
 
18
18
  gemspec
19
19
 
20
+ gem 'rake'
21
+
22
+ # docs
23
+ gem 'yard'
24
+
25
+ # debugging
26
+ gem 'pry'
27
+
20
28
  # easily generate test data
21
29
  gem 'quixote'
30
+
31
+ group :test do
32
+ gem 'rspec', '~> 2.6.0'
33
+ gem 'sinatra'
34
+ gem 'popen4'
35
+ end
data/README.md CHANGED
@@ -212,7 +212,11 @@ Get the 20 most recent 15 minute data point rollups for `temperature`:
212
212
 
213
213
  data = Librato::Metrics.get_measurements :temperature, :count => 20, :resolution => 900
214
214
 
215
- There are many more options supported for querying, take a look at the [REST API docs](http://dev.librato.com/v1/get/gauges/: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.
216
220
 
217
221
  ## Setting Metric Properties
218
222
 
@@ -76,7 +76,7 @@ module Librato
76
76
  :api_endpoint=, :authenticate, :connection,
77
77
  :faraday_adapter, :faraday_adapter=,
78
78
  :persistence, :persistence=, :persister,
79
- :get_metric, :get_measurements, :metrics,
79
+ :get_composite, :get_metric, :get_measurements, :metrics,
80
80
  :delete_metrics, :update_metric, :update_metrics,
81
81
  :submit,
82
82
  :sources, :get_source, :update_source,
@@ -163,13 +163,37 @@ module Librato
163
163
  options.empty? ? metric : metric["measurements"]
164
164
  end
165
165
 
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
+
166
190
  # Retrieve a specific metric by name, optionally including data points
167
191
  #
168
192
  # @example Get attributes for a metric
169
193
  # metric = Librato::Metrics.get_metric :temperature
170
194
  #
171
195
  # @example Get a metric and its 20 most recent data points
172
- # metric = Librato::Metrics.fetch :temperature, :count => 20
196
+ # metric = Librato::Metrics.get_metric :temperature, :count => 20
173
197
  # metric['measurements'] # => {...}
174
198
  #
175
199
  # A full list of query parameters can be found in the API
@@ -238,10 +262,10 @@ module Librato
238
262
  # List currently existing metrics
239
263
  #
240
264
  # @example List all metrics
241
- # Librato::Metrics.list
265
+ # Librato::Metrics.metrics
242
266
  #
243
267
  # @example List metrics with 'foo' in the name
244
- # Librato::Metrics.list :name => 'foo'
268
+ # Librato::Metrics.metrics :name => 'foo'
245
269
  #
246
270
  # @param [Hash] options
247
271
  def metrics(options={})
@@ -1,5 +1,5 @@
1
1
  module Librato
2
2
  module Metrics
3
- VERSION = "1.4.0"
3
+ VERSION = "1.5.0"
4
4
  end
5
5
  end
@@ -29,14 +29,6 @@ Gem::Specification.new do |s|
29
29
  s.add_dependency 'multi_json'
30
30
  s.add_dependency 'aggregate', '~> 0.2.2'
31
31
 
32
- ## development dependencies
33
- s.add_development_dependency 'rake'
34
- s.add_development_dependency 'rspec', '~> 2.6.0'
35
- s.add_development_dependency 'pry'
36
- s.add_development_dependency 'yard'
37
- s.add_development_dependency 'sinatra'
38
- s.add_development_dependency 'popen4'
39
-
40
32
  # omitting for now because jruby-19mode can't handle
41
33
  #s.add_development_dependency 'rdiscount' # for yard
42
34
 
@@ -355,35 +355,38 @@ module Librato
355
355
 
356
356
  end
357
357
 
358
- describe "Snapshots API" do
359
-
360
- let(:instrument_id) do
361
- instrument_options = {name: "Snapshot test subject"}
362
- conn = Metrics.connection
363
- resp = conn.post do |req|
364
- req.url conn.build_url("/v1/instruments")
365
- req.body = Librato::Metrics::SmartJSON.write(instrument_options)
366
- end
367
- instrument_id = Librato::Metrics::SmartJSON.read(resp.body)["id"]
368
- end
369
-
370
- let(:subject) do
371
- {instrument: {href: "http://api.librato.dev/v1/instruments/#{instrument_id}"}}
372
- end
373
-
374
- it "should #create_snapshot" do
375
- result = Metrics.create_snapshot(subject: subject)
376
- result["href"].should =~ /snapshots\/\d+$/
377
- end
378
-
379
- it "should #get_snapshot" do
380
- result = Metrics.create_snapshot(subject: subject)
381
- snapshot_id = result["href"][/(\d+)$/]
382
-
383
- result = Metrics.get_snapshot(snapshot_id)
384
- result["href"].should =~ /snapshots\/\d+$/
385
- end
386
- end
358
+ # Note: These are challenging to test end-to-end, should probably
359
+ # unit test instead. Disabling for now.
360
+ #
361
+ # describe "Snapshots API" do
362
+ #
363
+ # let(:instrument_id) do
364
+ # instrument_options = {name: "Snapshot test subject"}
365
+ # conn = Metrics.connection
366
+ # resp = conn.post do |req|
367
+ # req.url conn.build_url("/v1/instruments")
368
+ # req.body = Librato::Metrics::SmartJSON.write(instrument_options)
369
+ # end
370
+ # instrument_id = Librato::Metrics::SmartJSON.read(resp.body)["id"]
371
+ # end
372
+ #
373
+ # let(:subject) do
374
+ # {instrument: {href: "http://api.librato.dev/v1/instruments/#{instrument_id}"}}
375
+ # end
376
+ #
377
+ # it "should #create_snapshot" do
378
+ # result = Metrics.create_snapshot(subject: subject)
379
+ # result["href"].should =~ /snapshots\/\d+$/
380
+ # end
381
+ #
382
+ # it "should #get_snapshot" do
383
+ # result = Metrics.create_snapshot(subject: subject)
384
+ # snapshot_id = result["href"][/(\d+)$/]
385
+ #
386
+ # result = Metrics.get_snapshot(snapshot_id)
387
+ # result["href"].should =~ /snapshots\/\d+$/
388
+ # end
389
+ # end
387
390
 
388
391
  end
389
392
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librato-metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -37,7 +37,7 @@ cert_chain:
37
37
  bktaNmhlblFBRjFDSDk2WmNxY0pIMTc5UzJ0SWlLRE04a2VlUklVT1BDM1dU
38
38
  MGZhb2svMgpnQTJvemRyODUxYy9uQT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
39
39
  LS0tLS0K
40
- date: 2014-05-21 00:00:00.000000000 Z
40
+ date: 2014-11-06 00:00:00.000000000 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: faraday
@@ -87,102 +87,6 @@ dependencies:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.2.2
90
- - !ruby/object:Gem::Dependency
91
- name: rake
92
- requirement: !ruby/object:Gem::Requirement
93
- none: false
94
- requirements:
95
- - - ! '>='
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- type: :development
99
- prerelease: false
100
- version_requirements: !ruby/object:Gem::Requirement
101
- none: false
102
- requirements:
103
- - - ! '>='
104
- - !ruby/object:Gem::Version
105
- version: '0'
106
- - !ruby/object:Gem::Dependency
107
- name: rspec
108
- requirement: !ruby/object:Gem::Requirement
109
- none: false
110
- requirements:
111
- - - ~>
112
- - !ruby/object:Gem::Version
113
- version: 2.6.0
114
- type: :development
115
- prerelease: false
116
- version_requirements: !ruby/object:Gem::Requirement
117
- none: false
118
- requirements:
119
- - - ~>
120
- - !ruby/object:Gem::Version
121
- version: 2.6.0
122
- - !ruby/object:Gem::Dependency
123
- name: pry
124
- requirement: !ruby/object:Gem::Requirement
125
- none: false
126
- requirements:
127
- - - ! '>='
128
- - !ruby/object:Gem::Version
129
- version: '0'
130
- type: :development
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- none: false
134
- requirements:
135
- - - ! '>='
136
- - !ruby/object:Gem::Version
137
- version: '0'
138
- - !ruby/object:Gem::Dependency
139
- name: yard
140
- requirement: !ruby/object:Gem::Requirement
141
- none: false
142
- requirements:
143
- - - ! '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- - !ruby/object:Gem::Dependency
155
- name: sinatra
156
- requirement: !ruby/object:Gem::Requirement
157
- none: false
158
- requirements:
159
- - - ! '>='
160
- - !ruby/object:Gem::Version
161
- version: '0'
162
- type: :development
163
- prerelease: false
164
- version_requirements: !ruby/object:Gem::Requirement
165
- none: false
166
- requirements:
167
- - - ! '>='
168
- - !ruby/object:Gem::Version
169
- version: '0'
170
- - !ruby/object:Gem::Dependency
171
- name: popen4
172
- requirement: !ruby/object:Gem::Requirement
173
- none: false
174
- requirements:
175
- - - ! '>='
176
- - !ruby/object:Gem::Version
177
- version: '0'
178
- type: :development
179
- prerelease: false
180
- version_requirements: !ruby/object:Gem::Requirement
181
- none: false
182
- requirements:
183
- - - ! '>='
184
- - !ruby/object:Gem::Version
185
- version: '0'
186
90
  description: An easy to use ruby wrapper for Librato's Metrics API
187
91
  email: matt@librato.com
188
92
  executables: []
@@ -251,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
251
155
  version: '0'
252
156
  segments:
253
157
  - 0
254
- hash: -879066088464311398
158
+ hash: -1761741790277116379
255
159
  required_rubygems_version: !ruby/object:Gem::Requirement
256
160
  none: false
257
161
  requirements:
metadata.gz.sig CHANGED
@@ -1 +1,7 @@
1
- o��y��� 9���8)�K�����c��2`�+`��ߣ�W���5قh,"�lZ@�G`-,{�ך�!E&�t��e�V6�[ጓ�M�������U"��Y�P�d����_��>����&��r|�ٻů��F�zw�,ʹ�T�h2dcM��
1
+ ���O
2
+ VڬG�������
3
+ ��)�K2�á���<ө�Ԕ����)�^a�����Pun��%w�U�ML��
4
+ f)��� �Uʨ��9j�t�����NE�
5
+ >�02��nTx��F��Z&摽z�Վ�Z�I�"��q���;�)���n��4�~�WP
6
+ �̹���E'��H�
7
+ ˃ps�� ov\أ�Jy����h�d*0h