riemann-babbler 2.6.0 → 2.8.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: 6e0ecc11857794e573afa18885de1e5f2c5ab311
4
- data.tar.gz: c2aa26cf376bb34ace8dda00660b3d3ae4d959e6
3
+ metadata.gz: b143063f41beb4c9b327111f13891f54f06191c9
4
+ data.tar.gz: d2aace2daf7fa06e8220a672702e30e732fe58cf
5
5
  SHA512:
6
- metadata.gz: c7ef74e2db40a7666911c5498c7fdc40a98bf6cee45dc84617a90033311a7e142843f74909e37c5d302e59236fa69ebff9da67cfb8cc3fe408ce255ea7b11e98
7
- data.tar.gz: d883df8c7604020fa6f73a6fd0d9219747ab1c83560178de0f3a6ec5b2fca9f8e003ef79779fb965299d5c197ec18012b387f67ee3aeec42374974c76069b3cf
6
+ metadata.gz: 1b754dcde7563b03eba8aaf01e1915163cce48ed71ed938f42f48e5c3deb3b55f9e4b91e6cff8677794213d7288af1a63c69b489fcab05e6f0deea29d0222a3d
7
+ data.tar.gz: 6384087ddff384f9b21c37daf739e141033b673a7557497f818d0cf0fbdbae659a4e365f8838b5d1ce3207b8374f853b91d4dca6e3f9aad0a09fbb36fde5720f
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ pkg/
4
4
  *.swp
5
5
  .bundle
6
6
  vendor
7
+ .vendor
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- riemann-babbler (2.6.0)
4
+ riemann-babbler (2.8.0)
5
+ beefcake
5
6
  configatron
6
7
  docile
7
8
  file-tail
@@ -9,7 +10,6 @@ PATH
9
10
  net-ntp
10
11
  net-ping
11
12
  rest-client
12
- riemann-client
13
13
  sys-filesystem
14
14
  sys-proctable
15
15
  trollop
@@ -17,19 +17,18 @@ PATH
17
17
  GEM
18
18
  remote: https://rubygems.org/
19
19
  specs:
20
- beefcake (0.4.0)
20
+ beefcake (0.5.0)
21
21
  blankslate (2.1.2.4)
22
22
  coderay (1.0.9)
23
23
  configatron (2.13.0)
24
24
  yamler (>= 0.1.0)
25
25
  diff-lcs (1.2.4)
26
- docile (1.1.0)
26
+ docile (1.1.2)
27
27
  ffi (1.9.3)
28
28
  file-tail (1.0.12)
29
29
  tins (~> 0.5)
30
30
  method_source (0.8.2)
31
31
  mime-types (2.0)
32
- mtrc (0.0.4)
33
32
  net-http-server (0.2.2)
34
33
  parslet (~> 1.0)
35
34
  net-ntp (2.1.1)
@@ -44,10 +43,6 @@ GEM
44
43
  rake (10.1.0)
45
44
  rest-client (1.6.7)
46
45
  mime-types (>= 1.16)
47
- riemann-client (0.2.2)
48
- beefcake (>= 0.3.5)
49
- mtrc (>= 0.0.4)
50
- trollop (>= 1.16.2)
51
46
  rspec (2.14.1)
52
47
  rspec-core (~> 2.14.0)
53
48
  rspec-expectations (~> 2.14.0)
@@ -0,0 +1,50 @@
1
+ require "timeout"
2
+ require "socket"
3
+ require "beefcake"
4
+ require "riemann/babbler/event"
5
+ require "riemann/babbler/message"
6
+
7
+ module Riemann
8
+ module Babbler
9
+ class Client
10
+
11
+ attr_accessor :host, :port
12
+
13
+ CONNECT_TIMEOUT = 5
14
+ SEND_TIMEOUT = 5
15
+ RIEMANN_PORT = 5555
16
+
17
+ def initialize(opts = {})
18
+ @host = opts[:host]
19
+ @port = opts[:port] || RIEMANN_PORT
20
+ @mutex = Mutex.new
21
+ end
22
+
23
+ def <<(events)
24
+ events = [events] if events.kind_of?(Hash)
25
+ events = events.map {|e| Riemann::Babbler::Event.new(e) }
26
+ message = Riemann::Babbler::Message.new(:events => events)
27
+ with_connection do |socket|
28
+ x = message.encode_with_length
29
+ Timeout::timeout(SEND_TIMEOUT) {
30
+ socket.write(x)
31
+ socket.flush
32
+ }
33
+ end
34
+ end
35
+
36
+ def with_connection
37
+ @mutex.synchronize do
38
+ yield(@socket || connect)
39
+ end
40
+ end
41
+
42
+ def connect
43
+ Timeout::timeout(CONNECT_TIMEOUT) {
44
+ @socket = TCPSocket.new(@host, @port)
45
+ }
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,42 @@
1
+ module Riemann
2
+ module Babbler
3
+ class Event
4
+ include Beefcake::Message
5
+ optional :time, :int64, 1
6
+ optional :state, :string, 2
7
+ optional :service, :string, 3
8
+ optional :host, :string, 4
9
+ optional :description, :string, 5
10
+ repeated :tags, :string, 7
11
+ optional :ttl, :float, 8
12
+ optional :metric_sint64, :sint64, 13
13
+ optional :metric_d, :double, 14
14
+ optional :metric_f, :float, 15
15
+
16
+ def initialize(hash = nil)
17
+ if hash
18
+ super(hash)
19
+ self.metric = hash[:metric] if hash[:metric]
20
+ else
21
+ super
22
+ end
23
+ @time ||= Time.now.to_i
24
+ end
25
+
26
+ def metric
27
+ metric_d || metric_sint64 || metric_f
28
+ end
29
+
30
+ def metric=(m)
31
+ if Integer === m and (-(2**63)...2**63) === m
32
+ self.metric_sint64 = m
33
+ self.metric_f = m.to_f
34
+ else
35
+ self.metric_d = m.to_f
36
+ self.metric_f = m.to_f
37
+ end
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,18 @@
1
+ module Riemann
2
+ module Repin
3
+ class Message
4
+ include Beefcake::Message
5
+
6
+ optional :ok, :bool, 2
7
+ optional :error, :string, 3
8
+ repeated :events, Riemann::Babbler::Event, 6
9
+
10
+ def encode_with_length
11
+ buffer = ''
12
+ encoded = encode buffer
13
+ "#{[encoded.length].pack('N')}#{encoded}"
14
+ end
15
+
16
+ end
17
+ end
18
+ end
@@ -1,4 +1,4 @@
1
- require 'riemann/client'
1
+ require 'riemann/babbler/client'
2
2
  require 'resolv'
3
3
  require 'socket'
4
4
 
@@ -52,26 +52,18 @@ module Riemann
52
52
 
53
53
  # flush events
54
54
  def flush
55
- return nil if @events.empty?
56
- while @events.size > 0
57
- event = @events[0]
58
- Timeout::timeout(opts.riemann.timeout) {
59
- @riemann << event
60
- }
61
- @events.shift
62
- log :debug, "Posted event (#{@host}:#{@port}): #{event.inspect}"
63
- end
55
+ @riemann << @events
56
+ log :debug, "Posted event (#{@host}:#{@port}): #{events.inspect}"
57
+ @events.clear
64
58
  end
65
59
 
66
60
  # riemann client
67
61
  def build_client
68
62
  @riemann = nil
69
- @riemann = Riemann::Client.new({
63
+ @riemann = Riemann::Babbler::Client.new({
70
64
  :host => Resolv.new.getaddress(@host),
71
- :port => @port,
72
- :timeout => opts.riemann.timeout
65
+ :port => @port
73
66
  })
74
- @riemann = @riemann.tcp if opts.riemann.tcp
75
67
  @riemann
76
68
  end
77
69
 
@@ -1,5 +1,5 @@
1
1
  module Riemann
2
2
  module Babbler
3
- VERSION = '2.6.0'
3
+ VERSION = '2.8.0'
4
4
  end
5
5
  end
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = %w(lib)
20
20
 
21
- spec.add_dependency 'riemann-client'
21
+ spec.add_dependency 'beefcake'
22
22
  spec.add_dependency 'trollop'
23
23
  spec.add_dependency 'rest-client'
24
24
  spec.add_dependency 'sys-filesystem'
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-babbler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasiliev Dmitry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: riemann-client
14
+ name: beefcake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '>='
@@ -238,8 +238,11 @@ files:
238
238
  - Rakefile
239
239
  - bin/riemann-babbler
240
240
  - lib/riemann/babbler.rb
241
+ - lib/riemann/babbler/client.rb
241
242
  - lib/riemann/babbler/errors.rb
243
+ - lib/riemann/babbler/event.rb
242
244
  - lib/riemann/babbler/logging.rb
245
+ - lib/riemann/babbler/message.rb
243
246
  - lib/riemann/babbler/monkey_patches.rb
244
247
  - lib/riemann/babbler/options.rb
245
248
  - lib/riemann/babbler/plugin.rb