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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b87ff8ce94b283989659aee055996133bd0b9d6e
4
- data.tar.gz: b32c67b731da0fe2838466015dacf5afe80fdf8e
3
+ metadata.gz: bcbc0e57a8758b175915828c5c5007b1f067d69f
4
+ data.tar.gz: 523a7eb2da554eaa945db81589cdb6e5f98fae78
5
5
  SHA512:
6
- metadata.gz: 58fa4a57073b07d8de67961c971580b9858cf54ed044f654bce361d6cf5c802286ae91321fc17f7025cd6a9a1bbdb96d14f25397aa550a8934714742bac9c897
7
- data.tar.gz: 475d780d15e849204f9448409bd259017edef32d39853fe6a2f4bfc01399ba2dddc73ab7e951474f33b02d1ec5c4f8fdd92698b09c7654863558ffeb82b7da5d
6
+ metadata.gz: d33693fccd7cb36b04921bc8db7d42c61f16474f8146f94be831ee9d4c9a7aaf01377c7567ce20660cff6b67a1349559639f91edf347b947cb4a0a3426982e90
7
+ data.tar.gz: 1cd610978a3f47c8210b322c24b0531a099f354713cbd13b66fff70af6cfd9d42bd98d34a2210f35894c520f7fa3221bcdaad027e80d6066667b3926fd937b90
@@ -1,7 +1,7 @@
1
- require 'metriks-addons/opentsdb_reporter'
2
- require 'metriks-addons/signalfx_reporter'
3
- require 'metriks-addons/cloudwatch_reporter'
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.2'
6
+ VERSION = '3.1.0'
7
7
  end
@@ -2,7 +2,7 @@ require 'metriks/time_tracker'
2
2
  require 'logger'
3
3
  require 'aws'
4
4
  require 'time'
5
- require 'metriks-addons/base_reporter'
5
+ require_relative 'base_reporter'
6
6
 
7
7
  module MetriksAddons
8
8
  class CloudWatchReporter < BaseReporter
@@ -1,7 +1,7 @@
1
1
  require 'metriks/time_tracker'
2
2
  require 'rest-client'
3
3
  require 'logger'
4
- require 'metriks-addons/base_reporter'
4
+ require_relative 'base_reporter'
5
5
 
6
6
  module MetriksAddons
7
7
  class OpenTSDBReporter < BaseReporter
@@ -1,17 +1,15 @@
1
1
  require 'metriks/time_tracker'
2
- require 'rest-client'
3
2
  require 'logger'
4
- require 'metriks-addons/base_reporter'
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, :hostname, :tags, :logger
8
+ attr_accessor :client, :prefix, :source, :data, :tags, :logger
9
9
 
10
- def initialize(h, token, id, tags, options = {})
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
- if not @logger.nil?
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
- jsonstr = datapoints.to_json
36
- log "debug", "Json for SignalFx: #{jsonstr}"
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, :mean_rate
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[:counter] = counter if counter.any?
82
- datapoints[:gauge] = gauge if gauge.any?
83
-
69
+ datapoints[:counters] = counter if counter.any?
70
+ datapoints[:gauges] = gauge if gauge.any?
84
71
  datapoints
85
72
  end
86
73
 
@@ -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.2'
17
- s.date = '2015-11-17'
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.
@@ -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.any_instance.stub(:put_metric_data)
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',
@@ -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
- "ABCD",
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[:counter].size).to eql(2)
29
- expect(datapoints[:counter][0][:metric]).to eql("meter.testing.count")
30
- expect(datapoints[:counter][0][:value]).to eql(1)
31
- expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
32
- expect(datapoints[:counter][0][:timestamp]).not_to be_nil
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 "counter" do
33
+ it "counters" do
41
34
  @registry.counter('counter.testing').increment
42
35
  datapoints = @reporter.get_datapoints
43
- expect(datapoints[:counter].size).to eql(1)
44
- expect(datapoints[:counter][0][:metric]).to eql("counter.testing.count")
45
- expect(datapoints[:counter][0][:value]).to eql(1)
46
- expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
47
- expect(datapoints[:counter][0][:timestamp]).not_to be_nil
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[:counter].size).to eql(1)
54
- expect(datapoints[:gauge].size).to eql(3)
55
- expect(datapoints[:counter][0][:metric]).to eql("timer.testing.count")
56
- expect(datapoints[:counter][0][:value]).to eql(1)
57
- expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
58
- expect(datapoints[:counter][0][:timestamp]).not_to be_nil
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[:gauge][0][:metric]).to eql("timer.testing.min")
61
- expect(datapoints[:gauge][0][:value]).not_to be_nil
62
- expect(datapoints[:gauge][0][:dimensions]).to include(:env => "test")
63
- expect(datapoints[:gauge][0][:timestamp]).not_to be_nil
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[:gauge][1][:metric]).to eql("timer.testing.max")
66
- expect(datapoints[:gauge][1][:value]).not_to be_nil
67
- expect(datapoints[:gauge][1][:dimensions]).to include(:env => "test")
68
- expect(datapoints[:gauge][1][:timestamp]).not_to be_nil
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[:gauge][2][:metric]).to eql("timer.testing.mean")
71
- expect(datapoints[:gauge][2][:value]).not_to be_nil
72
- expect(datapoints[:gauge][2][:dimensions]).to include(:env => "test")
73
- expect(datapoints[:gauge][2][:timestamp]).not_to be_nil
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 "gauge" do
69
+ it "gauges" do
77
70
  @registry.gauge('gauge.testing') { 123 }
78
71
  datapoints = @reporter.get_datapoints
79
- expect(datapoints[:gauge].size).to eql(1)
80
- expect(datapoints[:gauge][0][:metric]).to eql("gauge.testing.value")
81
- expect(datapoints[:gauge][0][:value]).to eql(123)
82
- expect(datapoints[:gauge][0][:dimensions]).to include(:env => "test")
83
- expect(datapoints[:gauge][0][:timestamp]).not_to be_nil
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
- "ABCD",
94
- {:env => "test"},
85
+ [{:key => "env", :value => "test"}],
95
86
  { :registry => @registry, :batch_size => 3})
96
- stub_request(:post, "http://localhost:4242/api/datapoint?orgid=ABCD").
97
- with(:body => /^\{.*\}$/).
98
- to_return(:status => 200, :body => "", :headers => {})
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("counter.testing.#{i}").increment
95
+ @registry.counter("counters.testing.#{i}").increment
104
96
  end
105
- @registry.gauge("gauge.testing")
97
+ @registry.gauge("gauges.testing") { 123 }
106
98
  @reporter.submit @reporter.get_datapoints
107
- expect(a_request(:post, "http://localhost:4242/api/datapoint?orgid=ABCD")).to have_been_made
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.2
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-17 00:00:00.000000000 Z
11
+ date: 2015-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metriks