malevich 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|