metriks-addons 3.0.2 → 3.1.0

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.
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