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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 325d8a8c4611108b8280d60ae54db8be295f4e18
4
- data.tar.gz: c260c8bb5f244505a138a1235f5b873d85eee541
3
+ metadata.gz: 4d7d7c66660faa54456158791fbe274fdf93b3f6
4
+ data.tar.gz: 9cee49567d7421c75c80030fce5fd0ef923f6d66
5
5
  SHA512:
6
- metadata.gz: 08feb43a589b177bcbf1070807987cb1050b9032f9420a4f7b3e57f022d6e5d9c48d05340192942a4087f4f364294336c792a15fb8cb4be430d552a684102ce2
7
- data.tar.gz: 59c067fbd61348d2a1972fbde4e66c15cc28d8d5e0c9ee957e70d62b8f09365dfb5722dfe1fd176414bf8cdb7db67d30fda02184d8eef0b6ab8fd2fcde1523e7
6
+ metadata.gz: ac2952fcb7b3e451a2521f5f011d030738a72209375432562db751f5372f851f4f60f280ab22de9a22d78bb7b0ce762046d510641940fec4e8865d0785731069
7
+ data.tar.gz: 7b614db1bc7009427aa3085d6d73a0f65621efa19b65f48f0fcb4ade116244ab67a485e232dbba738f5d8a5f1b8a30859fc1ac115da5ff432b35a8f19ee737e2
@@ -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 for plugins', :short => '-d', :default => '/usr/share/malevich/plugins', :multi => true
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
@@ -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::Mash.new # for config from file
12
- @cmd = Hashie::Mash.new
13
- @plugins = Hashie::Mash.new # for plugin containers (errors, settings)
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
- real_ohai = Ohai::System.new
37
- real_ohai.all_plugins
38
- @ohai_timestamp = Time.now
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
@@ -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'
@@ -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
@@ -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? && 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::Mash.new
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
@@ -7,7 +7,7 @@ module Malevich
7
7
  attr_reader :name
8
8
 
9
9
  def initialize
10
- @host, @port = malevich.cmd['http-responder'].split(':')
10
+ @host, @port = malevich.cmd[:'http-responder'].split(':')
11
11
  @started_at = Time.now.to_i
12
12
  @name = 'http api'
13
13
  end
@@ -28,7 +28,7 @@ module Malevich
28
28
 
29
29
  def make_clients
30
30
  @riemanns.clear
31
- malevich.cmd['riemann-host'].each do |host|
31
+ malevich.cmd[:'riemann-host'].each do |host|
32
32
  riemann, port = host.split(':')
33
33
  port ||= 5555
34
34
  client = ::Riemann::Client.new({
@@ -20,7 +20,7 @@ module Malevich
20
20
  attr_reader :name
21
21
 
22
22
  def initialize
23
- @host, @port = malevich.cmd['udp-responder'].split(':')
23
+ @host, @port = malevich.cmd[:'udp-responder'].split(':')
24
24
  @name = 'udp api'
25
25
  end
26
26
 
@@ -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'
@@ -1,3 +1,3 @@
1
1
  module Malevich
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -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.3
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-13 00:00:00.000000000 Z
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
- - test/plugin_helpers_spec.rb
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:
@@ -1,6 +0,0 @@
1
- require 'rspec'
2
- require 'malevich'
3
-
4
- describe Malevich::Plugin, 'Helpers' do
5
-
6
- end