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 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