malevich 0.0.3 → 0.0.4
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/bin/malevich +3 -4
- data/lib/malevich.rb +6 -8
- data/lib/malevich/init.rb +1 -2
- data/lib/malevich/monitor.rb +10 -1
- data/lib/malevich/plugin.rb +3 -3
- data/lib/malevich/responders/http.rb +1 -1
- data/lib/malevich/responders/riemann.rb +1 -1
- data/lib/malevich/responders/udp.rb +1 -1
- data/lib/malevich/support/hash.rb +26 -0
- data/lib/malevich/support/init.rb +1 -0
- data/lib/malevich/version.rb +1 -1
- data/malevich.gemspec +1 -4
- metadata +6 -34
- data/test/plugin_helpers_spec.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d7d7c66660faa54456158791fbe274fdf93b3f6
|
4
|
+
data.tar.gz: 9cee49567d7421c75c80030fce5fd0ef923f6d66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac2952fcb7b3e451a2521f5f011d030738a72209375432562db751f5372f851f4f60f280ab22de9a22d78bb7b0ce762046d510641940fec4e8865d0785731069
|
7
|
+
data.tar.gz: 7b614db1bc7009427aa3085d6d73a0f65621efa19b65f48f0fcb4ade116244ab67a485e232dbba738f5d8a5f1b8a30859fc1ac115da5ff432b35a8f19ee737e2
|
data/bin/malevich
CHANGED
@@ -17,16 +17,15 @@ Usage:
|
|
17
17
|
where [options] are:
|
18
18
|
EOS
|
19
19
|
|
20
|
-
opt :config, 'Config file', :default => '/etc/malevich/config.yml'
|
20
|
+
opt :'config', 'Config file', :default => '/etc/malevich/config.yml'
|
21
21
|
opt :'log-level', 'Log level', :default => 'DEBUG'
|
22
22
|
opt :'riemann-host', 'Riemann server', :short => '-r', :default => '127.0.0.1:5555', :multi => true
|
23
23
|
opt :'riemann-tcp', 'Use tcp to connect riemann', :default => true
|
24
|
-
opt :tags, 'Set tags', :short => '-t', :multi => true
|
25
|
-
opt :plugins, 'Directory
|
24
|
+
opt :'tags', 'Set tags', :short => '-t', :multi => true
|
25
|
+
opt :'plugins', 'Directory plugins', :short => '-d', :default => '/usr/share/malevich/plugins', :multi => true
|
26
26
|
opt :'http-responder', 'Bind http api', :short => '-h', :default => '0.0.0.0:55755'
|
27
27
|
opt :'udp-responder', 'Bind udp api', :short => '-u', :default => '127.0.0.1:55955'
|
28
28
|
opt :'test', 'Test plugin file', :type => :string
|
29
|
-
opt :'profiling', 'Profiling ruby', :default => false
|
30
29
|
end
|
31
30
|
|
32
31
|
include Malevich::Mixin
|
data/lib/malevich.rb
CHANGED
@@ -8,9 +8,9 @@ module Malevich
|
|
8
8
|
attr_reader :config, :cmd, :plugins, :ohai, :monitor, :riemann_events, :dsl
|
9
9
|
|
10
10
|
def initialize
|
11
|
-
@config = Hashie
|
12
|
-
@cmd = Hashie
|
13
|
-
@plugins = Hashie
|
11
|
+
@config = Malevich::Hashie.new # for config from file
|
12
|
+
@cmd = Malevich::Hashie.new
|
13
|
+
@plugins = Malevich::Hashie.new # for plugin containers (errors, settings)
|
14
14
|
@logger = Logger.new(STDOUT)
|
15
15
|
@monitor = Malevich::Monitor.new
|
16
16
|
@riemann_events = ::Queue.new
|
@@ -33,11 +33,9 @@ module Malevich
|
|
33
33
|
def ohai
|
34
34
|
unless @ohai
|
35
35
|
Kernel::log :info, 'Load ohai data'
|
36
|
-
|
37
|
-
|
38
|
-
@
|
39
|
-
@ohai = real_ohai.data.dup
|
40
|
-
real_ohai = nil
|
36
|
+
@ohai = {}
|
37
|
+
@ohai[:os] = 'mac_os_x'
|
38
|
+
@ohai[:platform] = 'mac_os_x'
|
41
39
|
end
|
42
40
|
@ohai
|
43
41
|
end
|
data/lib/malevich/init.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'yaml'
|
3
3
|
require 'find'
|
4
|
-
require 'hashie'
|
5
|
-
require 'ohai'
|
6
4
|
require 'logger'
|
7
5
|
require 'thread'
|
8
6
|
require 'socket'
|
@@ -14,3 +12,4 @@ require 'malevich/plugin'
|
|
14
12
|
require 'malevich/monitor'
|
15
13
|
require 'malevich/loader'
|
16
14
|
require 'malevich/responders/init'
|
15
|
+
require 'malevich/support/init'
|
data/lib/malevich/monitor.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'ruby-prof'
|
2
|
+
RubyProf.measure_mode = RubyProf::MEMORY
|
3
|
+
|
1
4
|
module Malevich
|
2
5
|
class Monitor
|
3
6
|
|
@@ -22,6 +25,12 @@ module Malevich
|
|
22
25
|
@tasks << [th, obj]
|
23
26
|
end
|
24
27
|
|
28
|
+
def run_gc?
|
29
|
+
@gc_counter ||= 0
|
30
|
+
@gc_counter += 1
|
31
|
+
@gc_counter > 100 ? @gc_counter = 0 : false
|
32
|
+
end
|
33
|
+
|
25
34
|
def run!
|
26
35
|
loop do
|
27
36
|
@tasks.each_with_index do |task, i|
|
@@ -32,7 +41,7 @@ module Malevich
|
|
32
41
|
self << task[1]
|
33
42
|
end
|
34
43
|
log :debug, "Check alive #{@tasks.count} threads"
|
35
|
-
ObjectSpace.garbage_collect
|
44
|
+
ObjectSpace.garbage_collect if run_gc?
|
36
45
|
sleep CHECK_ALIVE
|
37
46
|
end
|
38
47
|
end
|
data/lib/malevich/plugin.rb
CHANGED
@@ -30,7 +30,7 @@ module Malevich
|
|
30
30
|
end
|
31
31
|
|
32
32
|
return log_and_false("'#{name}' not started, because have not 'collect'") if collect.nil?
|
33
|
-
return log_and_false("'#{name}' disabled in config") if settings.disable
|
33
|
+
return log_and_false("'#{name}' disabled in config") if settings.disable
|
34
34
|
return log_and_false("'#{name} disabled by run_if statement") unless !!self.instance_eval(&run_if)
|
35
35
|
log :unknown, "'#{name}' started"
|
36
36
|
end
|
@@ -57,8 +57,8 @@ module Malevich
|
|
57
57
|
|
58
58
|
def self.make_container(container)
|
59
59
|
define_method(container) do |&block|
|
60
|
-
malevich.plugins[container] ||=
|
61
|
-
malevich.plugins[container][self.name] ||= Hashie
|
60
|
+
malevich.plugins[container] ||= Malevich::Hashie.new
|
61
|
+
malevich.plugins[container][self.name] ||= Malevich::Hashie.new
|
62
62
|
malevich.plugins[container][self.name]
|
63
63
|
end
|
64
64
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# https://raw.github.com/rails/rails/master/activesupport/lib/active_support/core_ext/hash/deep_merge.rb
|
2
|
+
module Malevich
|
3
|
+
class Hashie < Hash
|
4
|
+
|
5
|
+
def deep_merge(other_hash, &block)
|
6
|
+
dup.deep_merge!(other_hash, &block)
|
7
|
+
end
|
8
|
+
|
9
|
+
def deep_merge!(other_hash, &block)
|
10
|
+
other_hash.each_pair do |k,v|
|
11
|
+
tv = self[k]
|
12
|
+
if tv.is_a?(Hash) && v.is_a?(Hash)
|
13
|
+
self[k] = tv.deep_merge(v, &block)
|
14
|
+
else
|
15
|
+
self[k] = block && tv ? block.call(k, tv, v) : v
|
16
|
+
end
|
17
|
+
end
|
18
|
+
self
|
19
|
+
end
|
20
|
+
|
21
|
+
def method_missing(method_name, *args, &blk)
|
22
|
+
self.[](method_name.to_sym, &blk)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'hash'
|
data/lib/malevich/version.rb
CHANGED
data/malevich.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['vadv.mkn@gmail.com']
|
11
11
|
spec.description = %q{Monitoring tool}
|
12
12
|
spec.summary = %q{Monitoring tool}
|
13
|
-
spec.homepage = ''
|
13
|
+
spec.homepage = 'https://github.com/vadv/malevich/'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
@@ -19,12 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_dependency 'riemann-client', '~> 0.2.2'
|
22
|
-
spec.add_dependency 'ohai', '~> 6.20.0'
|
23
22
|
spec.add_dependency 'trollop' # ohai
|
24
23
|
spec.add_dependency 'mixlib-shellout' # ohai
|
25
24
|
spec.add_dependency 'rest-client'
|
26
|
-
spec.add_dependency 'hashie'
|
27
|
-
|
28
25
|
|
29
26
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
30
27
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: malevich
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasiliev Dmitry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: riemann-client
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.2.2
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: ohai
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 6.20.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 6.20.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: trollop
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +66,6 @@ dependencies:
|
|
80
66
|
- - '>='
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: hashie
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '>='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
69
|
- !ruby/object:Gem::Dependency
|
98
70
|
name: bundler
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,10 +172,11 @@ files:
|
|
200
172
|
- lib/malevich/responders/init.rb
|
201
173
|
- lib/malevich/responders/riemann.rb
|
202
174
|
- lib/malevich/responders/udp.rb
|
175
|
+
- lib/malevich/support/hash.rb
|
176
|
+
- lib/malevich/support/init.rb
|
203
177
|
- lib/malevich/version.rb
|
204
178
|
- malevich.gemspec
|
205
|
-
|
206
|
-
homepage: ''
|
179
|
+
homepage: https://github.com/vadv/malevich/
|
207
180
|
licenses:
|
208
181
|
- MIT
|
209
182
|
metadata: {}
|
@@ -227,6 +200,5 @@ rubygems_version: 2.0.3
|
|
227
200
|
signing_key:
|
228
201
|
specification_version: 4
|
229
202
|
summary: Monitoring tool
|
230
|
-
test_files:
|
231
|
-
- test/plugin_helpers_spec.rb
|
203
|
+
test_files: []
|
232
204
|
has_rdoc:
|