metriks-addons 3.0.2 → 3.1.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/cloudwatch_reporter.rb +1 -1
- data/lib/metriks-addons/opentsdb_reporter.rb +1 -1
- data/lib/metriks-addons/signalfx_reporter.rb +10 -23
- data/metriks-addons.gemspec +2 -2
- data/spec/cloudwatch_spec.rb +1 -1
- data/spec/signalfx_spec.rb +44 -52
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcbc0e57a8758b175915828c5c5007b1f067d69f
|
4
|
+
data.tar.gz: 523a7eb2da554eaa945db81589cdb6e5f98fae78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d33693fccd7cb36b04921bc8db7d42c61f16474f8146f94be831ee9d4c9a7aaf01377c7567ce20660cff6b67a1349559639f91edf347b947cb4a0a3426982e90
|
7
|
+
data.tar.gz: 1cd610978a3f47c8210b322c24b0531a099f354713cbd13b66fff70af6cfd9d42bd98d34a2210f35894c520f7fa3221bcdaad027e80d6066667b3926fd937b90
|
data/lib/metriks-addons.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative 'metriks-addons/opentsdb_reporter'
|
2
|
+
require_relative 'metriks-addons/signalfx_reporter'
|
3
|
+
require_relative 'metriks-addons/cloudwatch_reporter'
|
4
4
|
|
5
5
|
module MetriksAddons
|
6
|
-
VERSION = '3.0
|
6
|
+
VERSION = '3.1.0'
|
7
7
|
end
|
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'metriks/time_tracker'
|
2
|
-
require 'rest-client'
|
3
2
|
require 'logger'
|
4
|
-
require '
|
3
|
+
require 'signalfx'
|
4
|
+
require_relative 'base_reporter'
|
5
5
|
|
6
6
|
module MetriksAddons
|
7
7
|
class SignalFxReporter < BaseReporter
|
8
|
-
attr_accessor :prefix, :source, :data, :
|
8
|
+
attr_accessor :client, :prefix, :source, :data, :tags, :logger
|
9
9
|
|
10
|
-
def initialize(
|
10
|
+
def initialize(token, tags, options = {})
|
11
11
|
super(options)
|
12
|
-
@hostname = h
|
13
12
|
@x_sf_token = token
|
14
|
-
@orgid = id
|
15
13
|
@tags = tags
|
16
14
|
|
17
15
|
@prefix = options[:prefix]
|
@@ -19,24 +17,14 @@ module MetriksAddons
|
|
19
17
|
|
20
18
|
@batch_size = options[:batch_size] || 50
|
21
19
|
|
22
|
-
|
23
|
-
RestClient.log =
|
24
|
-
Object.new.tap do |proxy|
|
25
|
-
def proxy.<<(message)
|
26
|
-
Rails.logger.debug message
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
20
|
+
@client = SignalFx.new @x_sf_token, batch_size: @batch_size
|
30
21
|
end
|
31
22
|
|
32
23
|
def submit(datapoints)
|
33
24
|
return if datapoints.empty?
|
34
25
|
|
35
|
-
|
36
|
-
|
37
|
-
response = RestClient.post "#{@hostname}?orgid=#{@orgid}",
|
38
|
-
jsonstr,
|
39
|
-
:content_type => :json, :accept => :json, :'X-SF-TOKEN' => @x_sf_token
|
26
|
+
log "debug", "Datapoints for SignalFx: #{datapoints.inspect}"
|
27
|
+
response = @client.send(counters: datapoints[:counters], gauges: datapoints[:gauges])
|
40
28
|
log "debug", "Sent #{datapoints.size} metrics to SignalFX"
|
41
29
|
log "debug", "Response is: #{response}"
|
42
30
|
end
|
@@ -58,7 +46,7 @@ module MetriksAddons
|
|
58
46
|
case metric
|
59
47
|
when Metriks::Meter
|
60
48
|
counter |= create_datapoints name, metric, time, [
|
61
|
-
:count
|
49
|
+
:count
|
62
50
|
]
|
63
51
|
when Metriks::Counter
|
64
52
|
counter |= create_datapoints name, metric, time, [
|
@@ -78,9 +66,8 @@ module MetriksAddons
|
|
78
66
|
end
|
79
67
|
end
|
80
68
|
|
81
|
-
datapoints[:
|
82
|
-
datapoints[:
|
83
|
-
|
69
|
+
datapoints[:counters] = counter if counter.any?
|
70
|
+
datapoints[:gauges] = gauge if gauge.any?
|
84
71
|
datapoints
|
85
72
|
end
|
86
73
|
|
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 = '3.0
|
17
|
-
s.date = '2015-11-
|
16
|
+
s.version = '3.1.0'
|
17
|
+
s.date = '2015-11-23'
|
18
18
|
|
19
19
|
## Make sure your summary is short. The description may be as long
|
20
20
|
## as you like.
|
data/spec/cloudwatch_spec.rb
CHANGED
@@ -4,7 +4,7 @@ require 'metriks-addons/cloudwatch_reporter'
|
|
4
4
|
|
5
5
|
describe "Smoke test" do
|
6
6
|
before(:each) do
|
7
|
-
AWS::CloudWatch.
|
7
|
+
allow_any_instance_of(AWS::CloudWatch).to receive(:put_metric_data)
|
8
8
|
@registry = Metriks::Registry.new
|
9
9
|
@reporter = MetriksAddons::CloudWatchReporter.new(
|
10
10
|
'DummyDummyDummyDummy',
|
data/spec/signalfx_spec.rb
CHANGED
@@ -10,10 +10,8 @@ describe "Smoke test" do
|
|
10
10
|
before(:each) do
|
11
11
|
@registry = Metriks::Registry.new
|
12
12
|
@reporter = MetriksAddons::SignalFxReporter.new(
|
13
|
-
'http://localhost:4242',
|
14
13
|
"123456789",
|
15
|
-
"
|
16
|
-
{:env => "test"},
|
14
|
+
[{:env => "test"}],
|
17
15
|
{ :registry => @registry, :batch_size => 3})
|
18
16
|
end
|
19
17
|
|
@@ -25,62 +23,57 @@ describe "Smoke test" do
|
|
25
23
|
it "meter" do
|
26
24
|
@registry.meter('meter.testing').mark
|
27
25
|
datapoints = @reporter.get_datapoints
|
28
|
-
expect(datapoints[:
|
29
|
-
expect(datapoints[:
|
30
|
-
expect(datapoints[:
|
31
|
-
expect(datapoints[:
|
32
|
-
expect(datapoints[:
|
33
|
-
|
34
|
-
expect(datapoints[:counter][1][:metric]).to eql("meter.testing.mean_rate")
|
35
|
-
expect(datapoints[:counter][1][:value]).not_to be_nil
|
36
|
-
expect(datapoints[:counter][1][:dimensions]).to include(:env => "test")
|
37
|
-
expect(datapoints[:counter][1][:timestamp]).not_to be_nil
|
26
|
+
expect(datapoints[:counters].size).to eql(1)
|
27
|
+
expect(datapoints[:counters][0][:metric]).to eql("meter.testing.count")
|
28
|
+
expect(datapoints[:counters][0][:value]).to eql(1)
|
29
|
+
expect(datapoints[:counters][0][:dimensions]).to include(:env => "test")
|
30
|
+
expect(datapoints[:counters][0][:timestamp]).not_to be_nil
|
38
31
|
end
|
39
32
|
|
40
|
-
it "
|
33
|
+
it "counters" do
|
41
34
|
@registry.counter('counter.testing').increment
|
42
35
|
datapoints = @reporter.get_datapoints
|
43
|
-
expect(datapoints[:
|
44
|
-
expect(datapoints[:
|
45
|
-
expect(datapoints[:
|
46
|
-
expect(datapoints[:
|
47
|
-
expect(datapoints[:
|
36
|
+
expect(datapoints[:counters].size).to eql(1)
|
37
|
+
expect(datapoints[:counters][0][:metric]).to eql("counter.testing.count")
|
38
|
+
expect(datapoints[:counters][0][:value]).to eql(1)
|
39
|
+
expect(datapoints[:counters][0][:dimensions]).to include(:env => "test")
|
40
|
+
expect(datapoints[:counters][0][:timestamp]).not_to be_nil
|
48
41
|
end
|
49
42
|
|
50
43
|
it "timer" do
|
51
44
|
@registry.timer('timer.testing').update(1.5)
|
52
45
|
datapoints = @reporter.get_datapoints
|
53
|
-
expect(datapoints[:
|
54
|
-
expect(datapoints[:
|
55
|
-
expect(datapoints[:
|
56
|
-
expect(datapoints[:
|
57
|
-
expect(datapoints[:
|
58
|
-
expect(datapoints[:
|
46
|
+
expect(datapoints[:counters].size).to eql(1)
|
47
|
+
expect(datapoints[:gauges].size).to eql(3)
|
48
|
+
expect(datapoints[:counters][0][:metric]).to eql("timer.testing.count")
|
49
|
+
expect(datapoints[:counters][0][:value]).to eql(1)
|
50
|
+
expect(datapoints[:counters][0][:dimensions]).to include(:env => "test")
|
51
|
+
expect(datapoints[:counters][0][:timestamp]).not_to be_nil
|
59
52
|
|
60
|
-
expect(datapoints[:
|
61
|
-
expect(datapoints[:
|
62
|
-
expect(datapoints[:
|
63
|
-
expect(datapoints[:
|
53
|
+
expect(datapoints[:gauges][0][:metric]).to eql("timer.testing.min")
|
54
|
+
expect(datapoints[:gauges][0][:value]).not_to be_nil
|
55
|
+
expect(datapoints[:gauges][0][:dimensions]).to include(:env => "test")
|
56
|
+
expect(datapoints[:gauges][0][:timestamp]).not_to be_nil
|
64
57
|
|
65
|
-
expect(datapoints[:
|
66
|
-
expect(datapoints[:
|
67
|
-
expect(datapoints[:
|
68
|
-
expect(datapoints[:
|
58
|
+
expect(datapoints[:gauges][1][:metric]).to eql("timer.testing.max")
|
59
|
+
expect(datapoints[:gauges][1][:value]).not_to be_nil
|
60
|
+
expect(datapoints[:gauges][1][:dimensions]).to include(:env => "test")
|
61
|
+
expect(datapoints[:gauges][1][:timestamp]).not_to be_nil
|
69
62
|
|
70
|
-
expect(datapoints[:
|
71
|
-
expect(datapoints[:
|
72
|
-
expect(datapoints[:
|
73
|
-
expect(datapoints[:
|
63
|
+
expect(datapoints[:gauges][2][:metric]).to eql("timer.testing.mean")
|
64
|
+
expect(datapoints[:gauges][2][:value]).not_to be_nil
|
65
|
+
expect(datapoints[:gauges][2][:dimensions]).to include(:env => "test")
|
66
|
+
expect(datapoints[:gauges][2][:timestamp]).not_to be_nil
|
74
67
|
end
|
75
68
|
|
76
|
-
it "
|
69
|
+
it "gauges" do
|
77
70
|
@registry.gauge('gauge.testing') { 123 }
|
78
71
|
datapoints = @reporter.get_datapoints
|
79
|
-
expect(datapoints[:
|
80
|
-
expect(datapoints[:
|
81
|
-
expect(datapoints[:
|
82
|
-
expect(datapoints[:
|
83
|
-
expect(datapoints[:
|
72
|
+
expect(datapoints[:gauges].size).to eql(1)
|
73
|
+
expect(datapoints[:gauges][0][:metric]).to eql("gauge.testing.value")
|
74
|
+
expect(datapoints[:gauges][0][:value]).to eql(123)
|
75
|
+
expect(datapoints[:gauges][0][:dimensions]).to include(:env => "test")
|
76
|
+
expect(datapoints[:gauges][0][:timestamp]).not_to be_nil
|
84
77
|
end
|
85
78
|
end
|
86
79
|
|
@@ -88,22 +81,21 @@ describe "Rest Client" do
|
|
88
81
|
before(:each) do
|
89
82
|
@registry = Metriks::Registry.new
|
90
83
|
@reporter = MetriksAddons::SignalFxReporter.new(
|
91
|
-
'http://localhost:4242/api/datapoint',
|
92
84
|
"123456789",
|
93
|
-
"
|
94
|
-
{:env => "test"},
|
85
|
+
[{:key => "env", :value => "test"}],
|
95
86
|
{ :registry => @registry, :batch_size => 3})
|
96
|
-
|
97
|
-
|
98
|
-
|
87
|
+
stub_request(:post, "https://ingest.signalfx.com/v2/datapoint").
|
88
|
+
with(:body => "\n0\x12\x14gauges.testing.value\x18\xE0\xA8\xBF\xA4\x93*\"\x02\x18{(\x002\v\n\x03env\x12\x04test\n4\x12\x18counters.testing.0.count\x18\xE0\xA8\xBF\xA4\x93*\"\x02\x18\x01(\x012\v\n\x03env\x12\x04test\n4\x12\x18counters.testing.1.count\x18\xE0\xA8\xBF\xA4\x93*\"\x02\x18\x01(\x012\v\n\x03env\x12\x04test\n4\x12\x18counters.testing.2.count\x18\xE0\xA8\xBF\xA4\x93*\"\x02\x18\x01(\x012\v\n\x03env\x12\x04test",
|
89
|
+
:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Content-Length'=>'212', 'Content-Type'=>'application/x-protobuf', 'User-Agent'=>'signalfx-ruby-client/0.1.0', 'X-Sf-Token'=>'123456789'}).
|
90
|
+
to_return(:status => 200, :body => "", :headers => {})
|
99
91
|
end
|
100
92
|
|
101
93
|
it "Send metricwise" do
|
102
94
|
for i in 0..2 do
|
103
|
-
@registry.counter("
|
95
|
+
@registry.counter("counters.testing.#{i}").increment
|
104
96
|
end
|
105
|
-
@registry.gauge("
|
97
|
+
@registry.gauge("gauges.testing") { 123 }
|
106
98
|
@reporter.submit @reporter.get_datapoints
|
107
|
-
expect(a_request(:post, "
|
99
|
+
expect(a_request(:post, "https://ingest.signalfx.com/v2/datapoint")).to have_been_made
|
108
100
|
end
|
109
101
|
end
|
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: 3.0
|
4
|
+
version: 3.1.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-
|
11
|
+
date: 2015-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metriks
|