librato-metrics 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
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