riemann-babbler 2.1.5 → 2.5.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 +4 -4
- data/Gemfile.lock +1 -1
- data/bin/riemann-babbler +5 -7
- data/lib/riemann/babbler/plugin_manager.rb +6 -4
- data/lib/riemann/babbler/sender.rb +25 -54
- data/lib/riemann/babbler/sender_client.rb +104 -0
- data/lib/riemann/babbler/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7dde4680673d2a1b6285938ac38b35b441a76a4
|
4
|
+
data.tar.gz: 3fcbaf886ab2039c512355c3c8137c52c384313c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 905dcf97e58e7d31739f23c699dc11da2d78dc2a40d6f216a4649aa27f33a9c3c9fcac2b4169c8c737ad03642f15429ef33ea993ec016957450e731b21c8a459
|
7
|
+
data.tar.gz: 48003d96e5f612b8bc5fc402078a2e285891594a1aad3441d9018e8f1c485ec344b2c6b9122b2739e602ca9ee2dac08aaf0febd4e10786197931fed82f0a24ab
|
data/Gemfile.lock
CHANGED
data/bin/riemann-babbler
CHANGED
@@ -19,19 +19,17 @@ where [options] are:
|
|
19
19
|
EOS
|
20
20
|
|
21
21
|
opt :config, 'Config file', :default => '/etc/riemann-babbler/config.yml'
|
22
|
-
opt :host, 'Riemann
|
23
|
-
opt :port, 'Riemann port', :default => 5555
|
22
|
+
opt :host, 'Riemann server', :default => '127.0.0.1', :multi => true
|
23
|
+
opt :port, 'Riemann server default port', :default => 5555
|
24
|
+
opt :backlog, 'Riemann server backlog for events', :default => 100
|
24
25
|
opt :timeout, 'Riemann timeout', :default => 5
|
25
|
-
#todo: opt :event_hostname, 'Event hostname', :type => String
|
26
26
|
opt :fqdn, 'Use fqdn for event hostname', :default => true
|
27
27
|
opt :ttl, 'TTL for events', :default => 60
|
28
28
|
opt :interval, 'Seconds between updates', :default => 60
|
29
29
|
opt :log_level, 'Level log', :default => 'DEBUG'
|
30
|
-
|
31
|
-
#todo: opt :log_format, 'Log format', :default => '%Y-%m-%d %H:%M:%S'
|
32
|
-
opt :plugins_directory, 'Directory for plugins', :default => '/usr/share/riemann-babbler/plugins'
|
30
|
+
opt :plugins_directory, 'Directory for plugins', :short => '-d', :default => '/usr/share/riemann-babbler/plugins'
|
33
31
|
opt :tcp, 'Use TCP transport instead of UDP (improves reliability, slight overhead.', :default => true
|
34
|
-
opt :minimize_event_count, 'Minimize count of sent messages', :default => true
|
32
|
+
opt :minimize_event_count, 'Minimize count of sent messages', :short => '-m', :default => true
|
35
33
|
opt :responder_bind_http, 'Bind to http responder', :default => '0.0.0.0:55755'
|
36
34
|
opt :responder_bind_udp, 'Bind to udp responder', :default => '0.0.0.0:55955'
|
37
35
|
end
|
@@ -5,6 +5,8 @@ module Riemann
|
|
5
5
|
include Riemann::Babbler::Logging
|
6
6
|
include Riemann::Babbler::Errors
|
7
7
|
|
8
|
+
CHECK_ALIVE_PLUGINS = 10
|
9
|
+
|
8
10
|
def initialize(sender, array_of_klasses)
|
9
11
|
@plugins = array_of_klasses
|
10
12
|
@sender = sender
|
@@ -12,7 +14,6 @@ module Riemann
|
|
12
14
|
end
|
13
15
|
|
14
16
|
def run!
|
15
|
-
|
16
17
|
@plugins.map do |plugin|
|
17
18
|
unless plugin.new(@sender).send(:run_plugin)
|
18
19
|
log :unknown, "Disable plugin: #{plugin}, because it not started by condition: run_plugin"
|
@@ -20,13 +21,14 @@ module Riemann
|
|
20
21
|
end
|
21
22
|
@mapping[plugin] = run_thread(plugin)
|
22
23
|
end
|
23
|
-
|
24
24
|
loop do
|
25
25
|
check_alive
|
26
|
-
sleep
|
26
|
+
sleep CHECK_ALIVE_PLUGINS
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
private
|
31
|
+
|
30
32
|
def run_thread(plugin)
|
31
33
|
Thread.new {
|
32
34
|
log :unknown, "Start plugin #{plugin}"
|
@@ -52,4 +54,4 @@ module Riemann
|
|
52
54
|
|
53
55
|
end
|
54
56
|
end
|
55
|
-
end
|
57
|
+
end
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'resolv'
|
3
|
-
require 'socket'
|
1
|
+
require_relative 'sender_client'
|
4
2
|
|
5
3
|
module Riemann
|
6
4
|
module Babbler
|
@@ -11,68 +9,41 @@ module Riemann
|
|
11
9
|
include Riemann::Babbler::Options
|
12
10
|
include Riemann::Babbler::Errors
|
13
11
|
|
14
|
-
attr_accessor :sender
|
15
|
-
|
16
12
|
HOSTNAME_FILE = '/proc/sys/kernel/hostname'
|
13
|
+
CHECK_CLIENT_ALIVE = 10
|
17
14
|
|
18
15
|
def initialize
|
19
|
-
@sender = build_riemann_client
|
20
16
|
@hostname = hostname
|
21
|
-
|
22
|
-
|
23
|
-
alias :r :sender
|
24
|
-
|
25
|
-
def build_riemann_client
|
26
|
-
@sender = Riemann::Client.new(
|
27
|
-
:host => resolv(opts.riemann.host), #todo: add ttl
|
28
|
-
:port => opts.riemann.port,
|
29
|
-
:timeout => opts.riemann.timeout
|
30
|
-
)
|
31
|
-
@sender = @sender.tcp if opts.riemann.tcp
|
32
|
-
connect_client(@sender)
|
33
|
-
@sender
|
34
|
-
end
|
35
|
-
|
36
|
-
#@return ipaddress of riemann server
|
37
|
-
def resolv(host)
|
38
|
-
begin
|
39
|
-
ip = Resolv.new.getaddress(host)
|
40
|
-
log :debug, "Resolv host: #{host} => #{ip}"
|
41
|
-
rescue
|
42
|
-
log :fatal, "Can't resolv hostname: #{host}"
|
43
|
-
exit Errors::RESOLV_RIEMANN_SERVER
|
44
|
-
end
|
45
|
-
ip
|
46
|
-
end
|
47
|
-
|
48
|
-
#@return connect to riemann
|
49
|
-
def connect_client(riemann)
|
50
|
-
begin
|
51
|
-
connect = @sender.connect
|
52
|
-
log :debug, "Connected to #{riemann.host}:#{riemann.port}"
|
53
|
-
rescue
|
54
|
-
log :fatal, "Can't connect to riemann server: #{riemann.host}:#{riemann.port}"
|
55
|
-
exit Errors::INIT_CONNECT
|
56
|
-
end
|
57
|
-
connect
|
17
|
+
@riemanns = create_riemanns
|
18
|
+
start
|
58
19
|
end
|
59
20
|
|
60
21
|
def <<(event)
|
61
22
|
set_event_hostname(event)
|
62
23
|
set_event_tags(event)
|
63
|
-
|
64
|
-
send_with_rescue(event, opts.riemann.timeout)
|
24
|
+
@riemanns.each {|r| r << event }
|
65
25
|
end
|
66
26
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
27
|
+
private
|
28
|
+
|
29
|
+
def start
|
30
|
+
Thread.new do
|
31
|
+
loop do
|
32
|
+
@riemanns.each do |r|
|
33
|
+
next if r.alive?
|
34
|
+
log :error, "Riemann client #{r.host}:#{r.port} is died, up it"
|
35
|
+
r.start
|
36
|
+
end
|
37
|
+
log :debug, "Check alive of riemann client [#{@riemanns.count}]"
|
38
|
+
sleep CHECK_CLIENT_ALIVE
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_riemanns
|
44
|
+
riemanns = Array.new
|
45
|
+
opts.riemann.host.each { |host| riemanns << Riemann::Babbler::Sender::Client.new(host) }
|
46
|
+
riemanns
|
76
47
|
end
|
77
48
|
|
78
49
|
def set_event_tags(event)
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'riemann/client'
|
2
|
+
require 'resolv'
|
3
|
+
require 'socket'
|
4
|
+
|
5
|
+
module Riemann
|
6
|
+
module Babbler
|
7
|
+
class Sender
|
8
|
+
class Client
|
9
|
+
|
10
|
+
include Riemann::Babbler::Logging
|
11
|
+
include Riemann::Babbler::Options
|
12
|
+
include Riemann::Babbler::Errors
|
13
|
+
|
14
|
+
INTERVAL_FLUSH = 0.1
|
15
|
+
|
16
|
+
attr_accessor :host, :port, :events
|
17
|
+
|
18
|
+
def initialize(host)
|
19
|
+
@host, @port = host.split(':')
|
20
|
+
@port ||= opts.riemann.port
|
21
|
+
@events = Array.new
|
22
|
+
@riemann = client
|
23
|
+
start
|
24
|
+
end
|
25
|
+
|
26
|
+
def start
|
27
|
+
@running = true
|
28
|
+
@runner = Thread.new do
|
29
|
+
while @running
|
30
|
+
sleep INTERVAL_FLUSH
|
31
|
+
flush
|
32
|
+
end
|
33
|
+
@runner = nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def stop
|
38
|
+
@running = false
|
39
|
+
end
|
40
|
+
|
41
|
+
def alive?
|
42
|
+
@runner.nil? || @runner.alive?
|
43
|
+
end
|
44
|
+
|
45
|
+
def <<(event)
|
46
|
+
@events.shift if @events.size < opts.riemann.backlog
|
47
|
+
@events << event
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
# flush events
|
53
|
+
def flush
|
54
|
+
return nil if @events.empty?
|
55
|
+
while @events.size > 0
|
56
|
+
event = @events[0]
|
57
|
+
log :debug, "Post event via #{@host}:#{@port} : #{event.inspect}"
|
58
|
+
Timeout::timeout(opts.riemann.timeout) {
|
59
|
+
@riemann << event
|
60
|
+
}
|
61
|
+
@events.shift
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# riemann client connect
|
66
|
+
def client
|
67
|
+
sender = Riemann::Client.new(
|
68
|
+
:host => resolv(@host), #todo: add ttl
|
69
|
+
:port => @port,
|
70
|
+
:timeout => opts.riemann.timeout
|
71
|
+
)
|
72
|
+
sender = sender.tcp if opts.riemann.tcp
|
73
|
+
connect_client(sender)
|
74
|
+
end
|
75
|
+
|
76
|
+
#@return ipaddress of riemann server
|
77
|
+
def resolv(host)
|
78
|
+
begin
|
79
|
+
ip = Resolv.new.getaddress(host)
|
80
|
+
log :debug, "Resolv host: #{host} => #{ip}"
|
81
|
+
rescue
|
82
|
+
log :fatal, "Can't resolv hostname: #{host}"
|
83
|
+
exit Errors::RESOLV_RIEMANN_SERVER
|
84
|
+
end
|
85
|
+
ip
|
86
|
+
end
|
87
|
+
|
88
|
+
#@return connect to riemann
|
89
|
+
def connect_client(riemann)
|
90
|
+
connect = riemann
|
91
|
+
begin
|
92
|
+
connect = riemann.connect if opts.riemann.tcp
|
93
|
+
log :debug, "Connected to #{riemann.host}:#{riemann.port}"
|
94
|
+
rescue
|
95
|
+
log :fatal, "Can't connect to riemann server: #{riemann.host}:#{riemann.port}"
|
96
|
+
exit Errors::INIT_CONNECT
|
97
|
+
end
|
98
|
+
connect
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riemann-babbler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.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-
|
11
|
+
date: 2013-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: riemann-client
|
@@ -276,6 +276,7 @@ files:
|
|
276
276
|
- lib/riemann/babbler/plugins/status_file.rb
|
277
277
|
- lib/riemann/babbler/plugins/tw_cli.rb
|
278
278
|
- lib/riemann/babbler/sender.rb
|
279
|
+
- lib/riemann/babbler/sender_client.rb
|
279
280
|
- lib/riemann/babbler/version.rb
|
280
281
|
- riemann-babbler.gemspec
|
281
282
|
- test/default_spec.rb
|