metriks-addons 2.3.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/metriks-addons.rb +4 -4
- data/lib/metriks-addons/base_reporter.rb +69 -0
- data/lib/{metriks → metriks-addons}/cloudwatch_reporter.rb +13 -79
- data/lib/{metriks → metriks-addons}/opentsdb_reporter.rb +4 -64
- data/lib/{metriks → metriks-addons}/signalfx_reporter.rb +11 -77
- data/metriks-addons.gemspec +6 -5
- data/spec/cloudwatch_spec.rb +19 -68
- data/spec/opentsdb_spec.rb +3 -3
- data/spec/signalfx_spec.rb +17 -57
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17f951f96c43d837060bdb4082615c71412876e9
|
4
|
+
data.tar.gz: ca27fb4cb369aa02929c730a6b5e2f2b21a41ec4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c00d29c77472b45a5b81628bce4a36718cb4852e65bfbf40815cb68fbb49729c0e976ecee59ae6befb9abfdafe9988897b523ec64f39f6c92bf7ee4b6c79e2ab
|
7
|
+
data.tar.gz: c18b42e521ad1eb8667008b92ebe041b06adbdf278b9c31697abc0007eff60f65749243e4c957fea0e61aa686133f97d9a83f01c4f91b1c274844c93f0b5f2fa
|
data/lib/metriks-addons.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require '
|
1
|
+
require 'metriks_addons/opentsdb_reporter'
|
2
|
+
require 'metriks_addons/signalfx_reporter'
|
3
|
+
require 'metriks_addons/cloudwatch_reporter'
|
4
4
|
|
5
5
|
module MetriksAddons
|
6
|
-
VERSION = '
|
6
|
+
VERSION = '3.0.0'
|
7
7
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module MetriksAddons
|
2
|
+
class BaseReporter
|
3
|
+
def initialize(options = {})
|
4
|
+
@logger = options[:logger] || nil
|
5
|
+
@registry = options[:registry] || Metriks::Registry.default
|
6
|
+
@interval = options[:interval] || 60
|
7
|
+
@time_tracker = Metriks::TimeTracker.new(@interval)
|
8
|
+
@on_error = options[:on_error] || proc { |ex| }
|
9
|
+
|
10
|
+
if options[:percentiles]
|
11
|
+
@percentiles = options[:percentiles]
|
12
|
+
else
|
13
|
+
@percentiles = [ 0.95, 0.99]
|
14
|
+
end
|
15
|
+
|
16
|
+
@mutex = Mutex.new
|
17
|
+
@running = false
|
18
|
+
end
|
19
|
+
|
20
|
+
def start
|
21
|
+
if @thread && @thread.alive?
|
22
|
+
return
|
23
|
+
end
|
24
|
+
|
25
|
+
@running = true
|
26
|
+
@thread = Thread.new do
|
27
|
+
while @running
|
28
|
+
@time_tracker.sleep
|
29
|
+
|
30
|
+
Thread.new do
|
31
|
+
flush
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def stop
|
38
|
+
@running = false
|
39
|
+
|
40
|
+
if @thread
|
41
|
+
@thread.join
|
42
|
+
@thread = nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def restart
|
47
|
+
stop
|
48
|
+
start
|
49
|
+
end
|
50
|
+
|
51
|
+
def flush
|
52
|
+
begin
|
53
|
+
@mutex.synchronize do
|
54
|
+
log "debug", "Flushing metrics"
|
55
|
+
submit get_datapoints
|
56
|
+
end
|
57
|
+
rescue Exception => ex
|
58
|
+
log "error",ex.message
|
59
|
+
@on_error[ex] rescue nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def log(level, msg)
|
64
|
+
if !@logger.nil?
|
65
|
+
@logger.send level, msg
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -2,12 +2,14 @@ require 'metriks/time_tracker'
|
|
2
2
|
require 'logger'
|
3
3
|
require 'aws'
|
4
4
|
require 'time'
|
5
|
+
require 'metriks-addons/base_reporter'
|
5
6
|
|
6
|
-
module
|
7
|
-
class CloudWatchReporter
|
7
|
+
module MetriksAddons
|
8
|
+
class CloudWatchReporter < BaseReporter
|
8
9
|
attr_accessor :prefix, :source, :cw, :tags, :logger
|
9
10
|
|
10
11
|
def initialize(access_key, secret_key, namespace, tags, options = {})
|
12
|
+
super(options)
|
11
13
|
@cw = AWS::CloudWatch.new(:access_key_id => access_key, :secret_access_key => secret_key)
|
12
14
|
@namespace = namespace
|
13
15
|
@dimensions = get_dimensions(tags)
|
@@ -15,70 +17,7 @@ module Metriks
|
|
15
17
|
@prefix = options[:prefix]
|
16
18
|
@source = options[:source]
|
17
19
|
|
18
|
-
@logger = options[:logger] || nil
|
19
20
|
@batch_size = options[:batch_size] || 50
|
20
|
-
@registry = options[:registry] || Metriks::Registry.default
|
21
|
-
@interval = options[:interval] || 60
|
22
|
-
@time_tracker = Metriks::TimeTracker.new(@interval)
|
23
|
-
@on_error = options[:on_error] || proc { |ex| }
|
24
|
-
|
25
|
-
if options[:percentiles]
|
26
|
-
@percentiles = options[:percentiles]
|
27
|
-
else
|
28
|
-
@percentiles = [ 0.95, 0.99]
|
29
|
-
end
|
30
|
-
|
31
|
-
@mutex = Mutex.new
|
32
|
-
@running = false
|
33
|
-
end
|
34
|
-
|
35
|
-
def log(level, msg)
|
36
|
-
if !@logger.nil?
|
37
|
-
@logger.send level, msg
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def start
|
42
|
-
if @thread && @thread.alive?
|
43
|
-
return
|
44
|
-
end
|
45
|
-
|
46
|
-
@running = true
|
47
|
-
@thread = Thread.new do
|
48
|
-
while @running
|
49
|
-
@time_tracker.sleep
|
50
|
-
|
51
|
-
Thread.new do
|
52
|
-
flush
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def stop
|
59
|
-
@running = false
|
60
|
-
|
61
|
-
if @thread
|
62
|
-
@thread.join
|
63
|
-
@thread = nil
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def restart
|
68
|
-
stop
|
69
|
-
start
|
70
|
-
end
|
71
|
-
|
72
|
-
def flush
|
73
|
-
begin
|
74
|
-
@mutex.synchronize do
|
75
|
-
log "debug", "Flushing metrics"
|
76
|
-
submit get_datapoints
|
77
|
-
end
|
78
|
-
rescue Exception => ex
|
79
|
-
log "error",ex.message
|
80
|
-
@on_error[ex] rescue nil
|
81
|
-
end
|
82
21
|
end
|
83
22
|
|
84
23
|
def submit(datapoints)
|
@@ -103,11 +42,9 @@ module Metriks
|
|
103
42
|
case metric
|
104
43
|
when Metriks::Meter
|
105
44
|
datapoints |= create_datapoints name, metric, time, [
|
106
|
-
:count, :
|
107
|
-
:fifteen_minute_rate, :mean_rate
|
45
|
+
:count, :mean_rate
|
108
46
|
], [
|
109
|
-
'Count', 'Count/Second'
|
110
|
-
'Count/Second', 'Count/Second'
|
47
|
+
'Count', 'Count/Second'
|
111
48
|
]
|
112
49
|
when Metriks::Counter
|
113
50
|
datapoints |= create_datapoints name, metric, time, [
|
@@ -123,17 +60,14 @@ module Metriks
|
|
123
60
|
]
|
124
61
|
when Metriks::Timer
|
125
62
|
datapoints |= create_datapoints name, metric, time, [
|
126
|
-
:count, :
|
127
|
-
:fifteen_minute_rate, :mean_rate,
|
128
|
-
:min, :max, :mean, :stddev
|
63
|
+
:count, :mean_rate, :min, :max, :mean, :stddev
|
129
64
|
], [
|
130
|
-
'Count', 'Count/Second', '
|
131
|
-
'
|
132
|
-
'Seconds', 'Seconds', 'Seconds', 'Seconds'
|
65
|
+
'Count', 'Count/Second', 'Seconds', 'Seconds',
|
66
|
+
'Seconds', 'Seconds'
|
133
67
|
], [
|
134
|
-
:median
|
68
|
+
:median
|
135
69
|
], [
|
136
|
-
'Seconds'
|
70
|
+
'Seconds'
|
137
71
|
]
|
138
72
|
when Metriks::Histogram
|
139
73
|
datapoints |= create_datapoints name, metric, time, [
|
@@ -142,9 +76,9 @@ module Metriks
|
|
142
76
|
'Count', 'Count', 'Count', 'Count',
|
143
77
|
'Count'
|
144
78
|
], [
|
145
|
-
:median
|
79
|
+
:median
|
146
80
|
], [
|
147
|
-
'Count'
|
81
|
+
'Count'
|
148
82
|
]
|
149
83
|
end
|
150
84
|
end
|
@@ -1,30 +1,21 @@
|
|
1
1
|
require 'metriks/time_tracker'
|
2
2
|
require 'rest-client'
|
3
3
|
require 'logger'
|
4
|
+
require 'metriks-addons/base_reporter'
|
4
5
|
|
5
|
-
module
|
6
|
-
class OpenTSDBReporter
|
6
|
+
module MetriksAddons
|
7
|
+
class OpenTSDBReporter < BaseReporter
|
7
8
|
attr_accessor :prefix, :source, :data, :hostname, :tags, :logger
|
8
9
|
|
9
10
|
def initialize(h, t, options = {})
|
11
|
+
super(options)
|
10
12
|
@hostname = h
|
11
13
|
@tags = t
|
12
14
|
|
13
15
|
@prefix = options[:prefix]
|
14
16
|
@source = options[:source]
|
15
17
|
|
16
|
-
@logger = options[:logger] || nil
|
17
18
|
@batch_size = options[:batch_size] || 50
|
18
|
-
@registry = options[:registry] || Metriks::Registry.default
|
19
|
-
@interval = options[:interval] || 60
|
20
|
-
@time_tracker = Metriks::TimeTracker.new(@interval)
|
21
|
-
@on_error = options[:on_error] || proc { |ex| }
|
22
|
-
|
23
|
-
if options[:percentiles]
|
24
|
-
@percentiles = options[:percentiles]
|
25
|
-
else
|
26
|
-
@percentiles = [ 0.95, 0.99]
|
27
|
-
end
|
28
19
|
|
29
20
|
if not @logger.nil?
|
30
21
|
RestClient.log =
|
@@ -34,57 +25,6 @@ module Metriks
|
|
34
25
|
end
|
35
26
|
end
|
36
27
|
end
|
37
|
-
@mutex = Mutex.new
|
38
|
-
@running = false
|
39
|
-
end
|
40
|
-
|
41
|
-
def log(level, msg)
|
42
|
-
if !@logger.nil?
|
43
|
-
@logger.send level, msg
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def start
|
48
|
-
if @thread && @thread.alive?
|
49
|
-
return
|
50
|
-
end
|
51
|
-
|
52
|
-
@running = true
|
53
|
-
@thread = Thread.new do
|
54
|
-
while @running
|
55
|
-
@time_tracker.sleep
|
56
|
-
|
57
|
-
Thread.new do
|
58
|
-
flush
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def stop
|
65
|
-
@running = false
|
66
|
-
|
67
|
-
if @thread
|
68
|
-
@thread.join
|
69
|
-
@thread = nil
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def restart
|
74
|
-
stop
|
75
|
-
start
|
76
|
-
end
|
77
|
-
|
78
|
-
def flush
|
79
|
-
begin
|
80
|
-
@mutex.synchronize do
|
81
|
-
log "debug", "Flushing metrics"
|
82
|
-
submit get_datapoints
|
83
|
-
end
|
84
|
-
rescue Exception => ex
|
85
|
-
log "error",ex.message
|
86
|
-
@on_error[ex] rescue nil
|
87
|
-
end
|
88
28
|
end
|
89
29
|
|
90
30
|
def submit(datapoints)
|
@@ -1,12 +1,14 @@
|
|
1
1
|
require 'metriks/time_tracker'
|
2
2
|
require 'rest-client'
|
3
3
|
require 'logger'
|
4
|
+
require 'metriks-addons/base_reporter'
|
4
5
|
|
5
|
-
module
|
6
|
-
class SignalFxReporter
|
6
|
+
module MetriksAddons
|
7
|
+
class SignalFxReporter < BaseReporter
|
7
8
|
attr_accessor :prefix, :source, :data, :hostname, :tags, :logger
|
8
9
|
|
9
10
|
def initialize(h, token, id, tags, options = {})
|
11
|
+
super(options)
|
10
12
|
@hostname = h
|
11
13
|
@x_sf_token = token
|
12
14
|
@orgid = id
|
@@ -15,18 +17,7 @@ module Metriks
|
|
15
17
|
@prefix = options[:prefix]
|
16
18
|
@source = options[:source]
|
17
19
|
|
18
|
-
@logger = options[:logger] || nil
|
19
20
|
@batch_size = options[:batch_size] || 50
|
20
|
-
@registry = options[:registry] || Metriks::Registry.default
|
21
|
-
@interval = options[:interval] || 60
|
22
|
-
@time_tracker = Metriks::TimeTracker.new(@interval)
|
23
|
-
@on_error = options[:on_error] || proc { |ex| }
|
24
|
-
|
25
|
-
if options[:percentiles]
|
26
|
-
@percentiles = options[:percentiles]
|
27
|
-
else
|
28
|
-
@percentiles = [ 0.95, 0.99]
|
29
|
-
end
|
30
21
|
|
31
22
|
if not @logger.nil?
|
32
23
|
RestClient.log =
|
@@ -36,57 +27,6 @@ module Metriks
|
|
36
27
|
end
|
37
28
|
end
|
38
29
|
end
|
39
|
-
@mutex = Mutex.new
|
40
|
-
@running = false
|
41
|
-
end
|
42
|
-
|
43
|
-
def log(level, msg)
|
44
|
-
if !@logger.nil?
|
45
|
-
@logger.send level, msg
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def start
|
50
|
-
if @thread && @thread.alive?
|
51
|
-
return
|
52
|
-
end
|
53
|
-
|
54
|
-
@running = true
|
55
|
-
@thread = Thread.new do
|
56
|
-
while @running
|
57
|
-
@time_tracker.sleep
|
58
|
-
|
59
|
-
Thread.new do
|
60
|
-
flush
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def stop
|
67
|
-
@running = false
|
68
|
-
|
69
|
-
if @thread
|
70
|
-
@thread.join
|
71
|
-
@thread = nil
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
def restart
|
76
|
-
stop
|
77
|
-
start
|
78
|
-
end
|
79
|
-
|
80
|
-
def flush
|
81
|
-
begin
|
82
|
-
@mutex.synchronize do
|
83
|
-
log "debug", "Flushing metrics"
|
84
|
-
submit get_datapoints
|
85
|
-
end
|
86
|
-
rescue Exception => ex
|
87
|
-
log "error",ex.message
|
88
|
-
@on_error[ex] rescue nil
|
89
|
-
end
|
90
30
|
end
|
91
31
|
|
92
32
|
def submit(datapoints)
|
@@ -118,8 +58,7 @@ module Metriks
|
|
118
58
|
case metric
|
119
59
|
when Metriks::Meter
|
120
60
|
counter |= create_datapoints name, metric, time, [
|
121
|
-
:count, :
|
122
|
-
:fifteen_minute_rate, :mean_rate
|
61
|
+
:count, :mean_rate
|
123
62
|
]
|
124
63
|
when Metriks::Counter
|
125
64
|
counter |= create_datapoints name, metric, time, [
|
@@ -131,28 +70,23 @@ module Metriks
|
|
131
70
|
]
|
132
71
|
when Metriks::UtilizationTimer
|
133
72
|
counter |= create_datapoints name, metric, time, [
|
134
|
-
:count, :
|
135
|
-
:
|
136
|
-
:min, :max, :mean, :stddev,
|
137
|
-
:one_minute_utilization, :five_minute_utilization,
|
138
|
-
:fifteen_minute_utilization, :mean_utilization,
|
73
|
+
:count, :mean_rate, :min, :max, :mean, :stddev,
|
74
|
+
:mean_utilization
|
139
75
|
], [
|
140
|
-
:median
|
76
|
+
:median
|
141
77
|
]
|
142
78
|
|
143
79
|
when Metriks::Timer
|
144
80
|
counter |= create_datapoints name, metric, time, [
|
145
|
-
:count, :
|
146
|
-
:fifteen_minute_rate, :mean_rate,
|
147
|
-
:min, :max, :mean, :stddev
|
81
|
+
:count, :mean_rate, :min, :max, :mean, :stddev
|
148
82
|
], [
|
149
|
-
:median
|
83
|
+
:median
|
150
84
|
]
|
151
85
|
when Metriks::Histogram
|
152
86
|
counter |= create_datapoints name, metric, time, [
|
153
87
|
:count, :min, :max, :mean, :stddev
|
154
88
|
], [
|
155
|
-
:median
|
89
|
+
:median
|
156
90
|
]
|
157
91
|
end
|
158
92
|
end
|
data/metriks-addons.gemspec
CHANGED
@@ -13,8 +13,8 @@ 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-addons'
|
16
|
-
s.version = '
|
17
|
-
s.date = '2015-
|
16
|
+
s.version = '3.0.0'
|
17
|
+
s.date = '2015-11-05'
|
18
18
|
|
19
19
|
## Make sure your summary is short. The description may be as long
|
20
20
|
## as you like.
|
@@ -63,9 +63,10 @@ Gem::Specification.new do |s|
|
|
63
63
|
README.md
|
64
64
|
Rakefile
|
65
65
|
lib/metriks-addons.rb
|
66
|
-
lib/metriks/
|
67
|
-
lib/metriks/
|
68
|
-
lib/metriks/
|
66
|
+
lib/metriks-addons/base_reporter.rb
|
67
|
+
lib/metriks-addons/cloudwatch_reporter.rb
|
68
|
+
lib/metriks-addons/opentsdb_reporter.rb
|
69
|
+
lib/metriks-addons/signalfx_reporter.rb
|
69
70
|
metriks-addons.gemspec
|
70
71
|
spec/cloudwatch_spec.rb
|
71
72
|
spec/opentsdb_spec.rb
|
data/spec/cloudwatch_spec.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'webmock/rspec'
|
2
2
|
require 'metriks'
|
3
|
-
require 'metriks/cloudwatch_reporter'
|
3
|
+
require 'metriks-addons/cloudwatch_reporter'
|
4
4
|
|
5
5
|
describe "Smoke test" do
|
6
6
|
before(:each) do
|
7
7
|
AWS::CloudWatch.any_instance.stub(:put_metric_data)
|
8
8
|
@registry = Metriks::Registry.new
|
9
|
-
@reporter =
|
10
|
-
'DummyDummyDummyDummy',
|
9
|
+
@reporter = MetriksAddons::CloudWatchReporter.new(
|
10
|
+
'DummyDummyDummyDummy',
|
11
11
|
"DummyDummyDummyDummyDummyDummyDummyDummy",
|
12
12
|
"testingtier",
|
13
13
|
{:env =>"test"},
|
@@ -22,36 +22,18 @@ describe "Smoke test" do
|
|
22
22
|
it "meter" do
|
23
23
|
@registry.meter('meter.testing').mark
|
24
24
|
datapoints = @reporter.get_datapoints
|
25
|
-
expect(datapoints.size).to eql(
|
25
|
+
expect(datapoints.size).to eql(2)
|
26
26
|
expect(datapoints[0][:metric_name]).to eql("meter.testing.count")
|
27
27
|
expect(datapoints[0][:value]).to eql(1)
|
28
28
|
expect(datapoints[0][:dimensions]).to include({:name => "env", :value => "test"})
|
29
29
|
expect(datapoints[0][:timestamp]).not_to be_nil
|
30
30
|
expect(datapoints[0][:unit]).to eql('Count')
|
31
31
|
|
32
|
-
expect(datapoints[1][:metric_name]).to eql("meter.testing.
|
32
|
+
expect(datapoints[1][:metric_name]).to eql("meter.testing.mean_rate")
|
33
33
|
expect(datapoints[1][:value]).not_to be_nil
|
34
34
|
expect(datapoints[1][:dimensions]).to include({:name => "env", :value => "test"})
|
35
35
|
expect(datapoints[1][:timestamp]).not_to be_nil
|
36
36
|
expect(datapoints[1][:unit]).to eql('Count/Second')
|
37
|
-
|
38
|
-
expect(datapoints[2][:metric_name]).to eql("meter.testing.five_minute_rate")
|
39
|
-
expect(datapoints[2][:value]).to eql(0.0)
|
40
|
-
expect(datapoints[2][:dimensions]).to include({:name => "env", :value => "test"})
|
41
|
-
expect(datapoints[2][:timestamp]).not_to be_nil
|
42
|
-
expect(datapoints[2][:unit]).to eql('Count/Second')
|
43
|
-
|
44
|
-
expect(datapoints[3][:metric_name]).to eql("meter.testing.fifteen_minute_rate")
|
45
|
-
expect(datapoints[3][:value]).to eql(0.0)
|
46
|
-
expect(datapoints[3][:dimensions]).to include({:name => "env", :value => "test"})
|
47
|
-
expect(datapoints[3][:timestamp]).not_to be_nil
|
48
|
-
expect(datapoints[3][:unit]).to eql('Count/Second')
|
49
|
-
|
50
|
-
expect(datapoints[4][:metric_name]).to eql("meter.testing.mean_rate")
|
51
|
-
expect(datapoints[4][:value]).not_to be_nil
|
52
|
-
expect(datapoints[4][:dimensions]).to include({:name => "env", :value => "test"})
|
53
|
-
expect(datapoints[4][:timestamp]).not_to be_nil
|
54
|
-
expect(datapoints[4][:unit]).to eql('Count/Second')
|
55
37
|
end
|
56
38
|
|
57
39
|
it "counter" do
|
@@ -68,78 +50,54 @@ describe "Smoke test" do
|
|
68
50
|
it "timer" do
|
69
51
|
@registry.timer('timer.testing').update(1.5)
|
70
52
|
datapoints = @reporter.get_datapoints
|
71
|
-
expect(datapoints.size).to eql(
|
53
|
+
expect(datapoints.size).to eql(7)
|
72
54
|
expect(datapoints[0][:metric_name]).to eql("timer.testing.count")
|
73
55
|
expect(datapoints[0][:value]).to eql(1)
|
74
56
|
expect(datapoints[0][:dimensions]).to include({:name => "env", :value => "test"})
|
75
57
|
expect(datapoints[0][:timestamp]).not_to be_nil
|
76
58
|
expect(datapoints[0][:unit]).to eql('Count')
|
77
59
|
|
78
|
-
expect(datapoints[1][:metric_name]).to eql("timer.testing.
|
60
|
+
expect(datapoints[1][:metric_name]).to eql("timer.testing.mean_rate")
|
79
61
|
expect(datapoints[1][:value]).not_to be_nil
|
80
62
|
expect(datapoints[1][:dimensions]).to include({:name => "env", :value => "test"})
|
81
63
|
expect(datapoints[1][:timestamp]).not_to be_nil
|
82
64
|
expect(datapoints[1][:unit]).to eql('Count/Second')
|
83
65
|
|
84
|
-
expect(datapoints[2][:metric_name]).to eql("timer.testing.
|
85
|
-
expect(datapoints[2][:value]).
|
66
|
+
expect(datapoints[2][:metric_name]).to eql("timer.testing.min")
|
67
|
+
expect(datapoints[2][:value]).not_to be_nil
|
86
68
|
expect(datapoints[2][:dimensions]).to include({:name => "env", :value => "test"})
|
87
69
|
expect(datapoints[2][:timestamp]).not_to be_nil
|
88
|
-
expect(datapoints[2][:unit]).to eql('
|
70
|
+
expect(datapoints[2][:unit]).to eql('Seconds')
|
89
71
|
|
90
|
-
expect(datapoints[3][:metric_name]).to eql("timer.testing.
|
91
|
-
expect(datapoints[3][:value]).
|
72
|
+
expect(datapoints[3][:metric_name]).to eql("timer.testing.max")
|
73
|
+
expect(datapoints[3][:value]).not_to be_nil
|
92
74
|
expect(datapoints[3][:dimensions]).to include({:name => "env", :value => "test"})
|
93
75
|
expect(datapoints[3][:timestamp]).not_to be_nil
|
94
|
-
expect(datapoints[3][:unit]).to eql('
|
76
|
+
expect(datapoints[3][:unit]).to eql('Seconds')
|
95
77
|
|
96
|
-
expect(datapoints[4][:metric_name]).to eql("timer.testing.
|
78
|
+
expect(datapoints[4][:metric_name]).to eql("timer.testing.mean")
|
97
79
|
expect(datapoints[4][:value]).not_to be_nil
|
98
80
|
expect(datapoints[4][:dimensions]).to include({:name => "env", :value => "test"})
|
99
81
|
expect(datapoints[4][:timestamp]).not_to be_nil
|
100
|
-
expect(datapoints[4][:unit]).to eql('
|
82
|
+
expect(datapoints[4][:unit]).to eql('Seconds')
|
101
83
|
|
102
|
-
expect(datapoints[5][:metric_name]).to eql("timer.testing.
|
84
|
+
expect(datapoints[5][:metric_name]).to eql("timer.testing.stddev")
|
103
85
|
expect(datapoints[5][:value]).not_to be_nil
|
104
86
|
expect(datapoints[5][:dimensions]).to include({:name => "env", :value => "test"})
|
105
87
|
expect(datapoints[5][:timestamp]).not_to be_nil
|
106
88
|
expect(datapoints[5][:unit]).to eql('Seconds')
|
107
89
|
|
108
|
-
expect(datapoints[6][:metric_name]).to eql("timer.testing.
|
90
|
+
expect(datapoints[6][:metric_name]).to eql("timer.testing.median")
|
109
91
|
expect(datapoints[6][:value]).not_to be_nil
|
110
92
|
expect(datapoints[6][:dimensions]).to include({:name => "env", :value => "test"})
|
111
93
|
expect(datapoints[6][:timestamp]).not_to be_nil
|
112
94
|
expect(datapoints[6][:unit]).to eql('Seconds')
|
113
|
-
|
114
|
-
expect(datapoints[7][:metric_name]).to eql("timer.testing.mean")
|
115
|
-
expect(datapoints[7][:value]).not_to be_nil
|
116
|
-
expect(datapoints[7][:dimensions]).to include({:name => "env", :value => "test"})
|
117
|
-
expect(datapoints[7][:timestamp]).not_to be_nil
|
118
|
-
expect(datapoints[7][:unit]).to eql('Seconds')
|
119
|
-
|
120
|
-
expect(datapoints[8][:metric_name]).to eql("timer.testing.stddev")
|
121
|
-
expect(datapoints[8][:value]).not_to be_nil
|
122
|
-
expect(datapoints[8][:dimensions]).to include({:name => "env", :value => "test"})
|
123
|
-
expect(datapoints[8][:timestamp]).not_to be_nil
|
124
|
-
expect(datapoints[8][:unit]).to eql('Seconds')
|
125
|
-
|
126
|
-
expect(datapoints[9][:metric_name]).to eql("timer.testing.median")
|
127
|
-
expect(datapoints[9][:value]).not_to be_nil
|
128
|
-
expect(datapoints[9][:dimensions]).to include({:name => "env", :value => "test"})
|
129
|
-
expect(datapoints[9][:timestamp]).not_to be_nil
|
130
|
-
expect(datapoints[9][:unit]).to eql('Seconds')
|
131
|
-
|
132
|
-
expect(datapoints[10][:metric_name]).to eql("timer.testing.95th_percentile")
|
133
|
-
expect(datapoints[10][:value]).not_to be_nil
|
134
|
-
expect(datapoints[10][:dimensions]).to include({:name => "env", :value => "test"})
|
135
|
-
expect(datapoints[10][:timestamp]).not_to be_nil
|
136
|
-
expect(datapoints[10][:unit]).to eql('Seconds')
|
137
95
|
end
|
138
96
|
|
139
97
|
it "histogram" do
|
140
98
|
@registry.histogram('histogram.testing').update(1.5)
|
141
99
|
datapoints = @reporter.get_datapoints
|
142
|
-
expect(datapoints.size).to eql(
|
100
|
+
expect(datapoints.size).to eql(6)
|
143
101
|
expect(datapoints[0][:metric_name]).to eql("histogram.testing.count")
|
144
102
|
expect(datapoints[0][:value]).to eql(1)
|
145
103
|
expect(datapoints[0][:dimensions]).to include({:name => "env", :value => "test"})
|
@@ -175,12 +133,6 @@ describe "Smoke test" do
|
|
175
133
|
expect(datapoints[5][:dimensions]).to include({:name => "env", :value => "test"})
|
176
134
|
expect(datapoints[5][:timestamp]).not_to be_nil
|
177
135
|
expect(datapoints[5][:unit]).to eql('Count')
|
178
|
-
|
179
|
-
expect(datapoints[6][:metric_name]).to eql("histogram.testing.95th_percentile")
|
180
|
-
expect(datapoints[6][:value]).not_to be_nil
|
181
|
-
expect(datapoints[6][:dimensions]).to include({:name => "env", :value => "test"})
|
182
|
-
expect(datapoints[6][:timestamp]).not_to be_nil
|
183
|
-
expect(datapoints[6][:unit]).to eql('Count')
|
184
136
|
end
|
185
137
|
|
186
138
|
it "gauge" do
|
@@ -191,7 +143,6 @@ describe "Smoke test" do
|
|
191
143
|
expect(datapoints[0][:value]).to eql(123)
|
192
144
|
expect(datapoints[0][:dimensions]).to include({:name => "env", :value => "test"})
|
193
145
|
expect(datapoints[0][:timestamp]).not_to be_nil
|
194
|
-
expect(datapoints[0][:unit]).to eql('Count')
|
146
|
+
expect(datapoints[0][:unit]).to eql('Count')
|
195
147
|
end
|
196
148
|
end
|
197
|
-
|
data/spec/opentsdb_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'webmock/rspec'
|
2
2
|
require 'metriks'
|
3
|
-
require 'metriks/opentsdb_reporter'
|
3
|
+
require 'metriks-addons/opentsdb_reporter'
|
4
4
|
|
5
5
|
describe "Smoke test" do
|
6
6
|
before(:all) do
|
@@ -9,7 +9,7 @@ describe "Smoke test" do
|
|
9
9
|
|
10
10
|
before(:each) do
|
11
11
|
@registry = Metriks::Registry.new
|
12
|
-
@reporter =
|
12
|
+
@reporter = MetriksAddons::OpenTSDBReporter.new(
|
13
13
|
'http://localhost:4242',
|
14
14
|
{:env => "test"},
|
15
15
|
{ :registry => @registry })
|
@@ -174,7 +174,7 @@ end
|
|
174
174
|
describe "Rest Client" do
|
175
175
|
before(:each) do
|
176
176
|
@registry = Metriks::Registry.new
|
177
|
-
@reporter =
|
177
|
+
@reporter = MetriksAddons::OpenTSDBReporter.new(
|
178
178
|
'http://localhost:4242',
|
179
179
|
{:env => "test"},
|
180
180
|
{ :registry => @registry, :batch_size => 3})
|
data/spec/signalfx_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'webmock/rspec'
|
2
2
|
require 'metriks'
|
3
|
-
require 'metriks/signalfx_reporter'
|
3
|
+
require 'metriks-addons/signalfx_reporter'
|
4
4
|
|
5
5
|
describe "Smoke test" do
|
6
6
|
before(:all) do
|
@@ -9,8 +9,8 @@ describe "Smoke test" do
|
|
9
9
|
|
10
10
|
before(:each) do
|
11
11
|
@registry = Metriks::Registry.new
|
12
|
-
@reporter =
|
13
|
-
'http://localhost:4242',
|
12
|
+
@reporter = MetriksAddons::SignalFxReporter.new(
|
13
|
+
'http://localhost:4242',
|
14
14
|
"123456789",
|
15
15
|
"ABCD",
|
16
16
|
{:env => "test"},
|
@@ -25,31 +25,16 @@ describe "Smoke test" do
|
|
25
25
|
it "meter" do
|
26
26
|
@registry.meter('meter.testing').mark
|
27
27
|
datapoints = @reporter.get_datapoints
|
28
|
-
expect(datapoints[:counter].size).to eql(
|
28
|
+
expect(datapoints[:counter].size).to eql(2)
|
29
29
|
expect(datapoints[:counter][0][:metric]).to eql("meter.testing.count")
|
30
30
|
expect(datapoints[:counter][0][:value]).to eql(1)
|
31
31
|
expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
|
32
32
|
expect(datapoints[:counter][0][:timestamp]).not_to be_nil
|
33
33
|
|
34
|
-
expect(datapoints[:counter][1][:metric]).to eql("meter.testing.
|
34
|
+
expect(datapoints[:counter][1][:metric]).to eql("meter.testing.mean_rate")
|
35
35
|
expect(datapoints[:counter][1][:value]).not_to be_nil
|
36
36
|
expect(datapoints[:counter][1][:dimensions]).to include(:env => "test")
|
37
37
|
expect(datapoints[:counter][1][:timestamp]).not_to be_nil
|
38
|
-
|
39
|
-
expect(datapoints[:counter][2][:metric]).to eql("meter.testing.five_minute_rate")
|
40
|
-
expect(datapoints[:counter][2][:value]).to eql(0.0)
|
41
|
-
expect(datapoints[:counter][2][:dimensions]).to include(:env => "test")
|
42
|
-
expect(datapoints[:counter][2][:timestamp]).not_to be_nil
|
43
|
-
|
44
|
-
expect(datapoints[:counter][3][:metric]).to eql("meter.testing.fifteen_minute_rate")
|
45
|
-
expect(datapoints[:counter][3][:value]).to eql(0.0)
|
46
|
-
expect(datapoints[:counter][3][:dimensions]).to include(:env => "test")
|
47
|
-
expect(datapoints[:counter][3][:timestamp]).not_to be_nil
|
48
|
-
|
49
|
-
expect(datapoints[:counter][4][:metric]).to eql("meter.testing.mean_rate")
|
50
|
-
expect(datapoints[:counter][4][:value]).not_to be_nil
|
51
|
-
expect(datapoints[:counter][4][:dimensions]).to include(:env => "test")
|
52
|
-
expect(datapoints[:counter][4][:timestamp]).not_to be_nil
|
53
38
|
end
|
54
39
|
|
55
40
|
it "counter" do
|
@@ -65,67 +50,47 @@ describe "Smoke test" do
|
|
65
50
|
it "timer" do
|
66
51
|
@registry.timer('timer.testing').update(1.5)
|
67
52
|
datapoints = @reporter.get_datapoints
|
68
|
-
expect(datapoints[:counter].size).to eql(
|
53
|
+
expect(datapoints[:counter].size).to eql(7)
|
69
54
|
expect(datapoints[:counter][0][:metric]).to eql("timer.testing.count")
|
70
55
|
expect(datapoints[:counter][0][:value]).to eql(1)
|
71
56
|
expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
|
72
57
|
expect(datapoints[:counter][0][:timestamp]).not_to be_nil
|
73
58
|
|
74
|
-
expect(datapoints[:counter][1][:metric]).to eql("timer.testing.
|
59
|
+
expect(datapoints[:counter][1][:metric]).to eql("timer.testing.mean_rate")
|
75
60
|
expect(datapoints[:counter][1][:value]).not_to be_nil
|
76
61
|
expect(datapoints[:counter][1][:dimensions]).to include(:env => "test")
|
77
62
|
expect(datapoints[:counter][1][:timestamp]).not_to be_nil
|
78
63
|
|
79
|
-
expect(datapoints[:counter][2][:metric]).to eql("timer.testing.
|
80
|
-
expect(datapoints[:counter][2][:value]).
|
64
|
+
expect(datapoints[:counter][2][:metric]).to eql("timer.testing.min")
|
65
|
+
expect(datapoints[:counter][2][:value]).not_to be_nil
|
81
66
|
expect(datapoints[:counter][2][:dimensions]).to include(:env => "test")
|
82
67
|
expect(datapoints[:counter][2][:timestamp]).not_to be_nil
|
83
68
|
|
84
|
-
expect(datapoints[:counter][3][:metric]).to eql("timer.testing.
|
85
|
-
expect(datapoints[:counter][3][:value]).
|
69
|
+
expect(datapoints[:counter][3][:metric]).to eql("timer.testing.max")
|
70
|
+
expect(datapoints[:counter][3][:value]).not_to be_nil
|
86
71
|
expect(datapoints[:counter][3][:dimensions]).to include(:env => "test")
|
87
72
|
expect(datapoints[:counter][3][:timestamp]).not_to be_nil
|
88
73
|
|
89
|
-
expect(datapoints[:counter][4][:metric]).to eql("timer.testing.
|
74
|
+
expect(datapoints[:counter][4][:metric]).to eql("timer.testing.mean")
|
90
75
|
expect(datapoints[:counter][4][:value]).not_to be_nil
|
91
76
|
expect(datapoints[:counter][4][:dimensions]).to include(:env => "test")
|
92
77
|
expect(datapoints[:counter][4][:timestamp]).not_to be_nil
|
93
78
|
|
94
|
-
expect(datapoints[:counter][5][:metric]).to eql("timer.testing.
|
79
|
+
expect(datapoints[:counter][5][:metric]).to eql("timer.testing.stddev")
|
95
80
|
expect(datapoints[:counter][5][:value]).not_to be_nil
|
96
81
|
expect(datapoints[:counter][5][:dimensions]).to include(:env => "test")
|
97
82
|
expect(datapoints[:counter][5][:timestamp]).not_to be_nil
|
98
83
|
|
99
|
-
expect(datapoints[:counter][6][:metric]).to eql("timer.testing.
|
84
|
+
expect(datapoints[:counter][6][:metric]).to eql("timer.testing.median")
|
100
85
|
expect(datapoints[:counter][6][:value]).not_to be_nil
|
101
86
|
expect(datapoints[:counter][6][:dimensions]).to include(:env => "test")
|
102
87
|
expect(datapoints[:counter][6][:timestamp]).not_to be_nil
|
103
|
-
|
104
|
-
expect(datapoints[:counter][7][:metric]).to eql("timer.testing.mean")
|
105
|
-
expect(datapoints[:counter][7][:value]).not_to be_nil
|
106
|
-
expect(datapoints[:counter][7][:dimensions]).to include(:env => "test")
|
107
|
-
expect(datapoints[:counter][7][:timestamp]).not_to be_nil
|
108
|
-
|
109
|
-
expect(datapoints[:counter][8][:metric]).to eql("timer.testing.stddev")
|
110
|
-
expect(datapoints[:counter][8][:value]).not_to be_nil
|
111
|
-
expect(datapoints[:counter][8][:dimensions]).to include(:env => "test")
|
112
|
-
expect(datapoints[:counter][8][:timestamp]).not_to be_nil
|
113
|
-
|
114
|
-
expect(datapoints[:counter][9][:metric]).to eql("timer.testing.median")
|
115
|
-
expect(datapoints[:counter][9][:value]).not_to be_nil
|
116
|
-
expect(datapoints[:counter][9][:dimensions]).to include(:env => "test")
|
117
|
-
expect(datapoints[:counter][9][:timestamp]).not_to be_nil
|
118
|
-
|
119
|
-
expect(datapoints[:counter][10][:metric]).to eql("timer.testing.95th_percentile")
|
120
|
-
expect(datapoints[:counter][10][:value]).not_to be_nil
|
121
|
-
expect(datapoints[:counter][10][:dimensions]).to include(:env => "test")
|
122
|
-
expect(datapoints[:counter][10][:timestamp]).not_to be_nil
|
123
88
|
end
|
124
89
|
|
125
90
|
it "histogram" do
|
126
91
|
@registry.histogram('histogram.testing').update(1.5)
|
127
92
|
datapoints = @reporter.get_datapoints
|
128
|
-
expect(datapoints[:counter].size).to eql(
|
93
|
+
expect(datapoints[:counter].size).to eql(6)
|
129
94
|
expect(datapoints[:counter][0][:metric]).to eql("histogram.testing.count")
|
130
95
|
expect(datapoints[:counter][0][:value]).to eql(1)
|
131
96
|
expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
|
@@ -155,11 +120,6 @@ describe "Smoke test" do
|
|
155
120
|
expect(datapoints[:counter][5][:value]).not_to be_nil
|
156
121
|
expect(datapoints[:counter][5][:dimensions]).to include(:env => "test")
|
157
122
|
expect(datapoints[:counter][5][:timestamp]).not_to be_nil
|
158
|
-
|
159
|
-
expect(datapoints[:counter][6][:metric]).to eql("histogram.testing.95th_percentile")
|
160
|
-
expect(datapoints[:counter][6][:value]).not_to be_nil
|
161
|
-
expect(datapoints[:counter][6][:dimensions]).to include(:env => "test")
|
162
|
-
expect(datapoints[:counter][6][:timestamp]).not_to be_nil
|
163
123
|
end
|
164
124
|
|
165
125
|
it "gauge" do
|
@@ -176,8 +136,8 @@ end
|
|
176
136
|
describe "Rest Client" do
|
177
137
|
before(:each) do
|
178
138
|
@registry = Metriks::Registry.new
|
179
|
-
@reporter =
|
180
|
-
'http://localhost:4242/api/datapoint',
|
139
|
+
@reporter = MetriksAddons::SignalFxReporter.new(
|
140
|
+
'http://localhost:4242/api/datapoint',
|
181
141
|
"123456789",
|
182
142
|
"ABCD",
|
183
143
|
{:env => "test"},
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metriks-addons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rajat Venkatesh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metriks
|
@@ -71,9 +71,10 @@ files:
|
|
71
71
|
- README.md
|
72
72
|
- Rakefile
|
73
73
|
- lib/metriks-addons.rb
|
74
|
-
- lib/metriks/
|
75
|
-
- lib/metriks/
|
76
|
-
- lib/metriks/
|
74
|
+
- lib/metriks-addons/base_reporter.rb
|
75
|
+
- lib/metriks-addons/cloudwatch_reporter.rb
|
76
|
+
- lib/metriks-addons/opentsdb_reporter.rb
|
77
|
+
- lib/metriks-addons/signalfx_reporter.rb
|
77
78
|
- metriks-addons.gemspec
|
78
79
|
- spec/cloudwatch_spec.rb
|
79
80
|
- spec/opentsdb_spec.rb
|