metriks 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/metriks.rb +1 -1
- data/lib/metriks/reporter/librato_metrics.rb +31 -24
- data/metriks.gemspec +1 -4
- data/test/librato_metrics_reporter_test.rb +2 -8
- metadata +6 -46
data/lib/metriks.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
|
-
require '
|
2
|
-
require 'faraday_middleware'
|
3
|
-
require 'yajl'
|
4
|
-
require 'yajl/json_gem'
|
1
|
+
require 'net/https'
|
5
2
|
|
6
3
|
module Metriks::Reporter
|
7
4
|
class LibratoMetrics
|
8
|
-
def self.connection
|
9
|
-
@connection ||= Faraday::Connection.new('https://metrics-api.librato.com') do |b|
|
10
|
-
b.use FaradayMiddleware::EncodeJson
|
11
|
-
b.adapter Faraday.default_adapter
|
12
|
-
b.use Faraday::Response::RaiseError
|
13
|
-
b.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
|
14
|
-
end.tap do |c|
|
15
|
-
c.headers[:content_type] = 'application/json'
|
16
|
-
c.headers[:user_agent] = "Metriks/#{Metriks::VERSION} Faraday/#{Faraday::VERSION}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
5
|
def initialize(email, token, options = {})
|
22
6
|
@email = email
|
23
7
|
@token = token
|
@@ -90,19 +74,42 @@ module Metriks::Reporter
|
|
90
74
|
end
|
91
75
|
end
|
92
76
|
|
93
|
-
submit(
|
77
|
+
submit(form_data(gauges.flatten))
|
94
78
|
end
|
95
79
|
|
96
|
-
def
|
97
|
-
|
98
|
-
|
80
|
+
def submit(data)
|
81
|
+
url = URI.parse('https://metrics-api.librato.com/v1/metrics')
|
82
|
+
req = Net::HTTP::Post.new(url.path)
|
83
|
+
req.basic_auth(@email, @token)
|
84
|
+
req.set_form_data(data)
|
85
|
+
|
86
|
+
http = Net::HTTP.new(url.host, url.port)
|
87
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
88
|
+
http.use_ssl = true
|
89
|
+
store = OpenSSL::X509::Store.new
|
90
|
+
store.set_default_paths
|
91
|
+
http.cert_store = store
|
92
|
+
|
93
|
+
case res = http.start { |http| http.request(req) }
|
94
|
+
when Net::HTTPSuccess, Net::HTTPRedirection
|
95
|
+
# OK
|
96
|
+
else
|
97
|
+
res.error!
|
99
98
|
end
|
100
99
|
end
|
101
100
|
|
102
|
-
def
|
103
|
-
|
104
|
-
|
101
|
+
def form_data(gauges)
|
102
|
+
data = {}
|
103
|
+
|
104
|
+
gauges.each_with_index do |gauge, idx|
|
105
|
+
gauge.each do |key, value|
|
106
|
+
if value
|
107
|
+
data["gauges[#{idx}][#{key}]"] = value.to_s
|
108
|
+
end
|
109
|
+
end
|
105
110
|
end
|
111
|
+
|
112
|
+
data
|
106
113
|
end
|
107
114
|
|
108
115
|
def prepare_metric(base_name, metric, keys, snapshot_keys = [])
|
data/metriks.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'metriks'
|
16
|
-
s.version = '0.9.
|
16
|
+
s.version = '0.9.2'
|
17
17
|
s.date = '2012-03-06'
|
18
18
|
|
19
19
|
## Make sure your summary is short. The description may be as long
|
@@ -42,9 +42,6 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.add_dependency('atomic', ["~> 1.0"])
|
43
43
|
s.add_dependency('hitimes', [ "~> 1.1"])
|
44
44
|
s.add_dependency('rbtree', [ "~> 0.3" ])
|
45
|
-
s.add_dependency('faraday', ['~> 0.7.0'])
|
46
|
-
s.add_dependency('faraday_middleware', ['~> 0.8.4'])
|
47
|
-
s.add_dependency('yajl-ruby')
|
48
45
|
|
49
46
|
## List your development dependencies here. Development dependencies are
|
50
47
|
## those that are only needed during development
|
@@ -6,14 +6,6 @@ class LibratoMetricsReporterTest < Test::Unit::TestCase
|
|
6
6
|
def setup
|
7
7
|
@registry = Metriks::Registry.new
|
8
8
|
@reporter = Metriks::Reporter::LibratoMetrics.new('user', 'password', :registry => @registry)
|
9
|
-
|
10
|
-
@reporter.connection.builder.tap do |c|
|
11
|
-
c.swap 1, Faraday::Adapter::Test do |stub|
|
12
|
-
stub.post '/v1/metrics' do |env|
|
13
|
-
[ 200, {}, '' ]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
9
|
end
|
18
10
|
|
19
11
|
def teardown
|
@@ -27,6 +19,8 @@ class LibratoMetricsReporterTest < Test::Unit::TestCase
|
|
27
19
|
@registry.timer('timer.testing').update(1.5)
|
28
20
|
@registry.utilization_timer('utilization_timer.testing').update(1.5)
|
29
21
|
|
22
|
+
@reporter.expects(:submit)
|
23
|
+
|
30
24
|
@reporter.write
|
31
25
|
end
|
32
26
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 9
|
8
|
-
-
|
9
|
-
version: 0.9.
|
8
|
+
- 2
|
9
|
+
version: 0.9.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Eric Lindvall
|
@@ -56,50 +56,10 @@ dependencies:
|
|
56
56
|
version: "0.3"
|
57
57
|
type: :runtime
|
58
58
|
version_requirements: *id003
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: faraday
|
61
|
-
prerelease: false
|
62
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - ~>
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
segments:
|
67
|
-
- 0
|
68
|
-
- 7
|
69
|
-
- 0
|
70
|
-
version: 0.7.0
|
71
|
-
type: :runtime
|
72
|
-
version_requirements: *id004
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: faraday_middleware
|
75
|
-
prerelease: false
|
76
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
77
|
-
requirements:
|
78
|
-
- - ~>
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
segments:
|
81
|
-
- 0
|
82
|
-
- 8
|
83
|
-
- 4
|
84
|
-
version: 0.8.4
|
85
|
-
type: :runtime
|
86
|
-
version_requirements: *id005
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: yajl-ruby
|
89
|
-
prerelease: false
|
90
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
91
|
-
requirements:
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
version: "0"
|
97
|
-
type: :runtime
|
98
|
-
version_requirements: *id006
|
99
59
|
- !ruby/object:Gem::Dependency
|
100
60
|
name: tomdoc
|
101
61
|
prerelease: false
|
102
|
-
requirement: &
|
62
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
103
63
|
requirements:
|
104
64
|
- - ~>
|
105
65
|
- !ruby/object:Gem::Version
|
@@ -108,11 +68,11 @@ dependencies:
|
|
108
68
|
- 2
|
109
69
|
version: "0.2"
|
110
70
|
type: :development
|
111
|
-
version_requirements: *
|
71
|
+
version_requirements: *id004
|
112
72
|
- !ruby/object:Gem::Dependency
|
113
73
|
name: mocha
|
114
74
|
prerelease: false
|
115
|
-
requirement: &
|
75
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
116
76
|
requirements:
|
117
77
|
- - ~>
|
118
78
|
- !ruby/object:Gem::Version
|
@@ -121,7 +81,7 @@ dependencies:
|
|
121
81
|
- 10
|
122
82
|
version: "0.10"
|
123
83
|
type: :development
|
124
|
-
version_requirements: *
|
84
|
+
version_requirements: *id005
|
125
85
|
description: An experimental metrics client.
|
126
86
|
email: eric@sevenscale.com
|
127
87
|
executables: []
|