newrelic-metrics 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/newrelic_metrics.rb +65 -0
  2. metadata +94 -0
@@ -0,0 +1,65 @@
1
+ require 'restclient'
2
+ require 'json'
3
+ require 'uri'
4
+ require 'chronic'
5
+
6
+ class NewRelicMetrics
7
+ BASE = 'https://api.newrelic.com/v2'
8
+
9
+ def initialize(api_key,ids={})
10
+ @api_key = api_key
11
+ raise ArgumentError, "Need to define either an application or server id" if ids.keys.length!=1
12
+ raise ArgumentError, "#{ids.keys.first} must be `application` or `server`" if ids.keys.first != :server && ids.keys.first != :application
13
+ @resource = "#{ids.keys.first}s"
14
+ @resource_id = ids.values.first
15
+ end
16
+
17
+ def names
18
+ get("metrics")
19
+ end
20
+
21
+ def summarize(metrics={},range={})
22
+ throw ArgumentError, "Range must be an array with the from and to time" if range.length>2
23
+
24
+ settings = {summarize:true}.merge(range)
25
+
26
+ metrics(metrics,settings)
27
+ end
28
+
29
+ def metrics(metrics={},options={})
30
+ query = ""
31
+ conditions = []
32
+
33
+ names = metrics.keys
34
+ values = metrics.values.flatten
35
+
36
+ names.each {|name| conditions << "names[]=#{URI.encode(name)}" }
37
+ values.each {|val| conditions << "values[]=#{URI.encode(val)}" }
38
+
39
+ if options[:from]
40
+ from_time = Chronic.parse(options[:from], context: :past)
41
+ to_time = Chronic.parse(options[:to]) if options[:to]
42
+ to_time ||= Time.now
43
+ if from_time
44
+ conditions << "from=#{from_time.getlocal('+00:00').iso8601}"
45
+ conditions << "to=#{to_time.getlocal('+00:00').iso8601}"
46
+ end
47
+ end
48
+
49
+ conditions << "summarize=true" if options[:summarize]
50
+
51
+ query = conditions.join('&')
52
+ get("metrics/data",query)
53
+ end
54
+
55
+ private
56
+
57
+ def get(path,query=nil)
58
+ uri = URI.parse('https://api.newrelic.com/')
59
+ uri.path = "/v2/#{@resource}/#{@resource_id}/#{path}.json"
60
+ uri.query = query if query && query != ""
61
+
62
+ response = RestClient.get(uri.to_s,'X-Api-Key'=>@api_key)
63
+ JSON.parse(response).values.first
64
+ end
65
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: newrelic-metrics
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Maciej Skierkowski
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-10-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.7.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.7.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: chronic
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.10.2
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.10.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: json
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.8.1
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.1
62
+ description:
63
+ email:
64
+ - maciej@factor.io
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - lib/newrelic_metrics.rb
70
+ homepage: https://factor.io
71
+ licenses: []
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 1.8.25
91
+ signing_key:
92
+ specification_version: 3
93
+ summary: Easily get metrics out of New Relic for your application or servers
94
+ test_files: []