riemann-babbler 0.3.1 → 0.3.3

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.
data/Gemfile CHANGED
@@ -4,7 +4,6 @@ gem "riemann-client"
4
4
  gem "configatron"
5
5
  gem "logger"
6
6
  gem "trollop"
7
- gem "parallel"
8
7
  gem "sys-filesystem"
9
8
  gem "rest-client"
10
9
 
data/Gemfile.lock CHANGED
@@ -7,15 +7,18 @@ GEM
7
7
  configatron (2.10.0)
8
8
  yamler (>= 0.1.0)
9
9
  diff-lcs (1.2.2)
10
+ ffi (1.4.0)
10
11
  logger (1.2.8)
11
12
  method_source (0.8.1)
13
+ mime-types (1.21)
12
14
  mtrc (0.0.4)
13
- parallel (0.6.4)
14
15
  pry (0.9.12)
15
16
  coderay (~> 1.0.5)
16
17
  method_source (~> 0.8)
17
18
  slop (~> 3.4)
18
19
  rake (10.0.4)
20
+ rest-client (1.6.7)
21
+ mime-types (>= 1.16)
19
22
  riemann-client (0.2.1)
20
23
  beefcake (>= 0.3.5)
21
24
  mtrc (>= 0.0.4)
@@ -29,6 +32,8 @@ GEM
29
32
  diff-lcs (>= 1.1.3, < 2.0)
30
33
  rspec-mocks (2.13.0)
31
34
  slop (3.4.3)
35
+ sys-filesystem (1.1.0)
36
+ ffi
32
37
  trollop (2.0)
33
38
  yamler (0.1.0)
34
39
 
@@ -39,9 +44,10 @@ DEPENDENCIES
39
44
  awesome_print
40
45
  configatron
41
46
  logger
42
- parallel
43
47
  pry
44
48
  rake
49
+ rest-client
45
50
  riemann-client
46
51
  rspec
52
+ sys-filesystem
47
53
  trollop
data/bin/riemann-babbler CHANGED
@@ -4,7 +4,6 @@
4
4
  require 'trollop'
5
5
  require 'yaml'
6
6
  require 'configatron'
7
- require 'parallel'
8
7
  require 'logger'
9
8
 
10
9
  require File.expand_path('../../lib/riemann/version', __FILE__)
@@ -25,7 +24,7 @@ EOS
25
24
  end
26
25
 
27
26
  # logger
28
- log = Logger.new(STDOUT)
27
+ logger = Logger.new(STDOUT)
29
28
 
30
29
  # merge configs
31
30
  config_file = if File.exist?( opts[:config] )
@@ -40,10 +39,6 @@ config_default = YAML.load_file( File.expand_path('../../config.yml', __FILE__)
40
39
  config = config_default.deep_merge( config_file )
41
40
  configatron.configure_from_hash config
42
41
 
43
- # отправляем к плагинам
44
- $configatron = configatron
45
- $logger = log
46
-
47
42
  # get plugins
48
43
  plugins = []
49
44
  default_plugins_dir = File.expand_path('../../lib/riemann/babbler/plugins/', __FILE__)
@@ -67,6 +62,16 @@ unless configatron.plugins.files.nil?
67
62
  end
68
63
 
69
64
  # start plugins
70
- Parallel.each( plugins, :in_threads => plugins.count ) do |plugin|
71
- require plugin
65
+ plugins.each { |plugin| require plugin }
66
+
67
+ plugin_threads = Riemann::Babbler.registered_plugins.map do |plugin|
68
+ Thread.new {
69
+ plugin.new( configatron, logger ).run
70
+ }
72
71
  end
72
+
73
+ Signal.trap "USR1" do
74
+ plugin_threads.each( &:kill )
75
+ end
76
+
77
+ plugin_threads.each( &:join )
@@ -2,32 +2,31 @@
2
2
 
3
3
  # Базовое описание плагина
4
4
  module Riemann
5
- module Babbler
5
+ class Babbler
6
+
7
+ def self.registered_plugins
8
+ @plugins ||= []
9
+ end
10
+
11
+ def self.inherited( klass )
12
+ registered_plugins << klass
13
+ end
6
14
 
7
15
  require 'riemann/client'
8
16
  require 'open3'
9
17
  require 'timeout'
10
18
  require 'rest_client'
11
19
 
12
- def self.included(base)
13
- base.instance_eval do
14
- def run
15
- new.run
16
- end
17
- end
18
- end
20
+ attr_reader :logger
19
21
 
20
- def initialize
21
- @configatron = $configatron
22
+ def initialize( configatron, logger )
23
+ @configatron = configatron
24
+ @logger = logger
22
25
  @storage = Hash.new
23
26
  init
24
27
  run
25
28
  end
26
29
 
27
- def log
28
- @logger ||= $logger
29
- end
30
-
31
30
  def options
32
31
  @configatron
33
32
  end
@@ -40,7 +39,7 @@ module Riemann
40
39
  end
41
40
  event[:tags] = options.riemann.tags unless options.riemann.tags.nil?
42
41
  event[:host] = host
43
- log.debug "Report status: #{event.inspect}"
42
+ logger.debug "Report status: #{event.inspect}"
44
43
  riemann << event
45
44
  end
46
45
 
@@ -106,19 +105,10 @@ module Riemann
106
105
  def tick
107
106
  posted_hash = collect
108
107
  posted_hash.each_key do |service|
109
- case service
110
- when Hash
111
- report({
112
- :service => plugin.service + " " + service,
113
- :metric => posted_hash[service],
114
- :is_diff => posted_hash[:is_diff]
115
- })
116
- else
117
- report({
118
- :service => plugin.service + " " + service,
119
- :metric => posted_hash[service]
120
- })
121
- end
108
+ report({
109
+ :service => service,
110
+ :metric => posted_hash[service][:metric]
111
+ })
122
112
  end
123
113
  end
124
114
 
@@ -1,5 +1,4 @@
1
- class Riemann::Babbler::Cpu
2
- include Riemann::Babbler
1
+ class Riemann::Babbler::Cpu < Riemann::Babbler
3
2
 
4
3
  def collect
5
4
  cpu = File.read('/proc/stat')
@@ -1,5 +1,4 @@
1
- class Riemann::Babbler::Disk
2
- include Riemann::Babbler
1
+ class Riemann::Babbler::Disk < Riemann::Babbler
3
2
 
4
3
  require 'sys/filesystem'
5
4
  include Sys
@@ -49,5 +48,3 @@ class Riemann::Babbler::Disk
49
48
  end
50
49
 
51
50
  end
52
-
53
- Riemann::Babbler::Disk.run
@@ -1,8 +1,8 @@
1
- class Riemann::Babbler::Dummy
2
- include Riemann::Babbler
1
+ class Riemann::Babbler::Dummy < Riemann::Babbler
3
2
 
4
3
  def collect
5
4
  {
5
+ :service => plugin.service,
6
6
  :state => 'ok'
7
7
  }
8
8
  end
@@ -1,5 +1,4 @@
1
- class Riemann::Babbler::La
2
- include Riemann::Babbler
1
+ class Riemann::Babbler::La < Riemann::Babbler
3
2
 
4
3
  def collect
5
4
  {
@@ -1,5 +1,4 @@
1
- class Riemann::Babbler::Memory
2
- include Riemann::Babbler
1
+ class Riemann::Babbler::Memory < Riemann::Babbler
3
2
 
4
3
  def memory
5
4
  m = File.read('/proc/meminfo').split(/\n/).inject({}) { |info, line|
@@ -1,23 +1,30 @@
1
- class Riemann::Babbler::Net
2
- include Riemann::Babbler
1
+ class Riemann::Babbler::Net < Riemann::Babbler
3
2
 
4
3
  WORDS = ['rx bytes',
5
- 'rx packets',
6
- 'rx errs',
7
- 'rx drop',
8
- 'rx fifo',
9
- 'rx frame',
10
- 'rx compressed',
11
- 'rx multicast',
12
- 'tx bytes',
13
- 'tx packets',
14
- 'tx drops',
15
- 'tx fifo',
16
- 'tx colls',
17
- 'tx carrier',
18
- 'tx compressed']
4
+ 'rx packets',
5
+ 'rx errs',
6
+ 'rx drop',
7
+ 'rx fifo',
8
+ 'rx frame',
9
+ 'rx compressed',
10
+ 'rx multicast',
11
+ 'tx bytes',
12
+ 'tx packets',
13
+ 'tx drops',
14
+ 'tx fifo',
15
+ 'tx colls',
16
+ 'tx carrier',
17
+ 'tx compressed']
19
18
 
20
- def collect
19
+ def plugin
20
+ options.plugins.net
21
+ end
22
+
23
+ def init
24
+ @old_status = Hash.new
25
+ end
26
+
27
+ def net
21
28
  f = File.read('/proc/net/dev')
22
29
  status = Hash.new
23
30
  f.split("\n").each do |line|
@@ -35,5 +42,16 @@ class Riemann::Babbler::Net
35
42
  status
36
43
  end
37
44
 
38
- end
45
+ def tick
46
+ status = net
47
+ status.each_key do |service|
48
+ #next if status[service] == 0
49
+ report({
50
+ :service => service,
51
+ :metric => status[service],
52
+ :is_diff => true
53
+ })
54
+ end
55
+ end
39
56
 
57
+ end
@@ -1,5 +1,5 @@
1
1
  module Riemann
2
- module Babbler
3
- VERSION = '0.3.1'
2
+ class Babbler
3
+ VERSION = '0.3.3'
4
4
  end
5
5
  end
@@ -15,7 +15,6 @@ Gem::Specification.new do |s|
15
15
  s.add_dependency('configatron')
16
16
  s.add_dependency('logger')
17
17
  s.add_dependency('trollop')
18
- s.add_dependency('parallel')
19
18
  s.add_dependency('sys-filesystem')
20
19
  s.add_dependency('rest-client')
21
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-babbler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -75,22 +75,6 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: parallel
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :runtime
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
78
  - !ruby/object:Gem::Dependency
95
79
  name: sys-filesystem
96
80
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +145,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
145
  - - ! '>='
162
146
  - !ruby/object:Gem::Version
163
147
  version: '0'
148
+ segments:
149
+ - 0
150
+ hash: 1972461691726905926
164
151
  required_rubygems_version: !ruby/object:Gem::Requirement
165
152
  none: false
166
153
  requirements:
@@ -174,4 +161,3 @@ signing_key:
174
161
  specification_version: 3
175
162
  summary: Riemann health cheker.
176
163
  test_files: []
177
- has_rdoc: