eye 0.9.1 → 0.9.2.nosigar

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: b76b8d9060cb42b041484705984a1a7f3da93b38
4
- data.tar.gz: ca3823da4f96ff0935b83687a1c1ef06716a1fbe
3
+ metadata.gz: 6f1f98d5fe3b366203e2e2e969373559e9f17085
4
+ data.tar.gz: 8b512175c809fac3f0995eff1e03a2875d5b411f
5
5
  SHA512:
6
- metadata.gz: 10f87c6c0916bd8384d736c23673821c4e9ba06af76ae51293e95b451319bfec6dfe9fac50aec8903cc26679143e2b2fcd47352ade2132efdbe4d656de3a65ac
7
- data.tar.gz: 36bded5d52f33ff52ee0908bb16fe57c5a0afab6d8d608138fd2b398b3deb3212f4772f2c26598c6c667a81a0969e05520b39225e69955ba3ae75e618c780eac
6
+ metadata.gz: 55db19635e608199650d052b64880feec83792ad5f5f6fb4d30fdee5e91e4354adf6237ba773ca15971f0ea5ba920363c4df2a2ce72dba27a5a0a3f378f5dd14
7
+ data.tar.gz: dab9c2f17dca1e52c6e9070d2c434cff23a01c5f1e8f57104b512c520862c2771835e6172c8d28d1040868c1bc77b9328480b6d58d02871a778ed49948525d44
data/Rakefile CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env rake
2
2
 
3
3
  require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
5
4
  require 'coveralls/rake/task'
6
5
 
7
6
  Coveralls::RakeTask.new
@@ -23,10 +22,6 @@ task :split_test do
23
22
  abort unless system(cmd)
24
23
  end
25
24
 
26
- RSpec::Core::RakeTask.new(:spec) do |t|
27
- t.verbose = false
28
- end
29
-
30
25
  task :remove_coverage do
31
26
  require 'fileutils'
32
27
  FileUtils.rm_rf(File.expand_path(File.join(File.dirname(__FILE__), %w{ coverage })))
@@ -23,7 +23,6 @@ Gem::Specification.new do |gem|
23
23
  gem.add_dependency 'celluloid-io', '~> 0.17.0'
24
24
  gem.add_dependency 'state_machines'
25
25
  gem.add_dependency 'thor'
26
- gem.add_dependency 'sigar', '~> 0.7.3'
27
26
 
28
27
  gem.add_development_dependency 'rake'
29
28
  gem.add_development_dependency 'rspec', '< 2.14'
data/lib/eye.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Eye
2
- VERSION = '0.9.1'
2
+ VERSION = '0.9.2.nosigar'
3
3
  ABOUT = "Eye v#{VERSION} (c) 2012-2016 @kostya"
4
4
  PROCLINE = "eye monitoring v#{VERSION}"
5
5
 
@@ -19,7 +19,6 @@ module Eye
19
19
  autoload :Utils, 'eye/utils'
20
20
  autoload :Notify, 'eye/notify'
21
21
  autoload :Config, 'eye/config'
22
- autoload :Sigar, 'eye/sigar'
23
22
  autoload :Controller, 'eye/controller'
24
23
  autoload :Control, 'eye/control'
25
24
  autoload :Cli, 'eye/cli'
@@ -35,8 +35,7 @@ class Eye::Application
35
35
  { name: @name, type: :application, subtree: @groups.map(&:status_data_short) }
36
36
  end
37
37
 
38
- def debug_data
39
- end
38
+ def debug_data; end
40
39
 
41
40
  def send_call(call)
42
41
  info "call: #{call}"
@@ -57,8 +57,7 @@ class Eye::ChildProcess
57
57
  state == :up
58
58
  end
59
59
 
60
- def start
61
- end
60
+ def start; end
62
61
 
63
62
  def stop
64
63
  kill_process
@@ -72,14 +71,11 @@ class Eye::ChildProcess
72
71
  end
73
72
  end
74
73
 
75
- def monitor
76
- end
74
+ def monitor; end
77
75
 
78
- def unmonitor
79
- end
76
+ def unmonitor; end
80
77
 
81
- def delete
82
- end
78
+ def delete; end
83
79
 
84
80
  def destroy
85
81
  remove_watchers
@@ -8,7 +8,6 @@ require_relative 'utils/mini_active_support'
8
8
  Object.send(:include, Eye::Logger::ObjectExt)
9
9
 
10
10
  # needs to preload
11
- Eye::Sigar
12
11
  Eye::SystemResources
13
12
 
14
13
  class Eye::Controller
@@ -9,7 +9,7 @@ module Eye::Controller::Status
9
9
  about: Eye::ABOUT,
10
10
  resources: Eye::SystemResources.resources($$),
11
11
  ruby: RUBY_DESCRIPTION,
12
- gems: %w[Celluloid Celluloid::IO StateMachines NIO Timers Sigar].map { |c| gem_version(c) },
12
+ gems: %w[Celluloid Celluloid::IO StateMachines NIO Timers].map { |c| gem_version(c) },
13
13
  logger: Eye::Logger.args.present? ? [Eye::Logger.dev.to_s, *Eye::Logger.args] : Eye::Logger.dev.to_s,
14
14
  home: Eye::Local.home,
15
15
  dir: Eye::Local.dir,
@@ -7,4 +7,3 @@ gem 'nio4r'
7
7
  gem 'timers'
8
8
 
9
9
  gem 'state_machines'
10
- gem 'sigar', '~> 0.7.3'
@@ -24,8 +24,7 @@ class Eye::Logger
24
24
  [Class, Module].include?(self.class) ? to_s : "<#{self.class}>"
25
25
  end
26
26
 
27
- def logger_sub_tag
28
- end
27
+ def logger_sub_tag; end
29
28
 
30
29
  def logger
31
30
  @logger ||= Eye::Logger.new(logger_tag, logger_sub_tag)
@@ -4,7 +4,7 @@ module Eye::Process::Config
4
4
  keep_alive: true, # restart when crashed
5
5
  check_alive_period: 5.seconds,
6
6
 
7
- check_identity: true,
7
+ check_identity: false,
8
8
  check_identity_period: 60.seconds,
9
9
  check_identity_grace: 60.seconds,
10
10
 
@@ -36,7 +36,6 @@ class Eye::Server
36
36
  begin
37
37
  sign, msg_size = text[0...8].unpack('N*')
38
38
  raise "unknown protocol #{sign}" unless sign == Eye::Client::SIGN
39
- msg_size = text[4...8].unpack('N')[0]
40
39
  content = text[8..-1]
41
40
  content << socket.read(msg_size - content.length) while content.length < msg_size
42
41
  payload = Marshal.load(content)
@@ -140,6 +140,26 @@ module Eye::System
140
140
  env
141
141
  end
142
142
 
143
+ PS_AUX_CMD = if RUBY_PLATFORM.include?('darwin')
144
+ 'ps axo pid,ppid,pcpu,rss,start'
145
+ else
146
+ 'ps axo pid,ppid,pcpu,rss,start_time'
147
+ end
148
+
149
+ # get table
150
+ # {pid => {:rss =>, :cpu =>, :ppid => , :start_time => }}
151
+ # slow
152
+ def ps_aux
153
+ str = Process.send('`', PS_AUX_CMD).force_encoding('binary')
154
+ h = {}
155
+ str.each_line do |line|
156
+ chunk = line.strip.split(%r[\s+])
157
+ h[chunk[0].to_i] = { ppid: chunk[1].to_i, cpu: chunk[2].to_i,
158
+ rss: chunk[3].to_i, start_time: chunk[4] }
159
+ end
160
+ h
161
+ end
162
+
143
163
  end
144
164
 
145
165
  end
@@ -7,14 +7,12 @@ class Eye::SystemResources
7
7
 
8
8
  def memory(pid)
9
9
  if mem = cache.proc_mem(pid)
10
- mem.resident
10
+ mem * 1024
11
11
  end
12
12
  end
13
13
 
14
14
  def cpu(pid)
15
- if cpu = cache.proc_cpu(pid)
16
- cpu.percent * 100
17
- end
15
+ cache.proc_cpu(pid)
18
16
  end
19
17
 
20
18
  def children(parent_pid)
@@ -22,23 +20,21 @@ class Eye::SystemResources
22
20
  end
23
21
 
24
22
  def start_time(pid) # unixtime
25
- if cpu = cache.proc_cpu(pid)
26
- cpu.start_time.to_i / 1000
23
+ if st = cache.proc_start_time(pid)
24
+ Time.parse(st).to_i
27
25
  end
28
26
  end
29
27
 
30
28
  # total cpu usage in seconds
31
- def cputime(pid)
32
- if cpu = cache.proc_cpu(pid)
33
- cpu.total.to_f / 1000
34
- end
29
+ def cputime(_pid)
30
+ 0
35
31
  end
36
32
 
37
33
  # last child in a children tree
38
34
  def leaf_child(pid)
39
35
  if dc = deep_children(pid)
40
36
  dc.detect do |child|
41
- args = Eye::Sigar.proc_args(child)[0] rescue ''
37
+ args = ''
42
38
  !args.start_with?('logger') && child != pid
43
39
  end
44
40
  end
@@ -57,8 +53,8 @@ class Eye::SystemResources
57
53
  end
58
54
  end
59
55
 
60
- def args(pid)
61
- Eye::Sigar.proc_args(pid).join(' ').strip rescue '-'
56
+ def args(_pid)
57
+ '-'
62
58
  end
63
59
 
64
60
  def resources(pid)
@@ -92,31 +88,34 @@ class Eye::SystemResources
92
88
  end
93
89
 
94
90
  def clear
95
- @memory = {}
96
- @cpu = {}
97
- @ppids = {}
91
+ @ps_aux = nil
98
92
  end
99
93
 
100
94
  def proc_mem(pid)
101
- @memory[pid] ||= Eye::Sigar.proc_mem(pid) if pid
102
-
103
- rescue ArgumentError
104
- # when incorrect PID, just skip
95
+ ps_aux[pid].try :[], :rss
105
96
  end
106
97
 
107
98
  def proc_cpu(pid)
108
- @cpu[pid] ||= Eye::Sigar.proc_cpu(pid) if pid
99
+ ps_aux[pid].try :[], :cpu
100
+ end
109
101
 
110
- rescue ArgumentError
111
- # when incorrect PID, just skip
102
+ def proc_start_time(pid)
103
+ ps_aux[pid].try :[], :start_time
112
104
  end
113
105
 
114
- def children(pid)
115
- if pid
116
- @ppids[pid] ||= Eye::Sigar.proc_list("State.Ppid.eq=#{pid}")
117
- else
118
- []
106
+ def children(parent_pid)
107
+ parent_pid = parent_pid.to_i
108
+
109
+ childs = []
110
+ ps_aux.each do |pid, h|
111
+ childs << pid if h[:ppid] == parent_pid
119
112
  end
113
+
114
+ childs
115
+ end
116
+
117
+ def ps_aux
118
+ @ps_aux ||= defer { Eye::System.ps_aux }
120
119
  end
121
120
 
122
121
  end
@@ -52,7 +52,7 @@ module Eye::Utils
52
52
  e = e.gsub(%r[#.+$], '').strip
53
53
  next unless e.include?('=')
54
54
  k, v = e.split('=', 2)
55
- h[k] = v
55
+ h[k] = v.gsub(%r/^["']+(.*)["']+$/, '\1')
56
56
  end
57
57
  h
58
58
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eye
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2.nosigar
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Makarchev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2017-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: sigar
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.7.3
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.7.3
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rake
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -434,7 +420,6 @@ files:
434
420
  - lib/eye/process/validate.rb
435
421
  - lib/eye/process/watchers.rb
436
422
  - lib/eye/server.rb
437
- - lib/eye/sigar.rb
438
423
  - lib/eye/system.rb
439
424
  - lib/eye/system_resources.rb
440
425
  - lib/eye/trigger.rb
@@ -1,5 +0,0 @@
1
- require 'sigar'
2
- require 'logger'
3
-
4
- Eye::Sigar = ::Sigar.new
5
- Eye::Sigar.logger = ::Logger.new(nil)