newrelic-metrics 0.0.3
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/lib/newrelic_metrics.rb +65 -0
- 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: []
|