moro 0.0.2 → 0.0.3

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: 27b543a627fe46b180156d8b9ab5fbcd7dc8b5d1
4
- data.tar.gz: 30964a2fe875128004040983ce43f1fd4a15bf69
3
+ metadata.gz: 2974d4de962f4ea5717ce2d63b1bdb5fafac8edf
4
+ data.tar.gz: 49ca4d68746d851f02653c2fcf0b809857f565e4
5
5
  SHA512:
6
- metadata.gz: 1643bf530de22a704ebbeb8cbe8312b4abb58bfe480cde00487570a04c41adc74e938308de1f239c082477a829d0b69fe2511227b7b5fc76463d54eea3bbd1c6
7
- data.tar.gz: f5aa96f4f1db895053d33ffd655943fa57e89834a5e3c3f5ea0fae55c53bf9e2383491d79d641ad60ca73be751e21096bf23f66eec47b5f2edfba51ff20b2600
6
+ metadata.gz: 04173525eb6b45a3f9dfdca18087f3f058dc267a8940009714721c3271fe5a55ef13b7436ec9231bb509694e54a1946cb82cf876390b5b358d71aee5f97a2361
7
+ data.tar.gz: cfb94d1b29dd50f66f80abd72e2bef76ef65b5777a318f647be94d8214b60f0a9ac9711fa5f3c64f248abe8da2e5b56ba6dad2e84b7b70ef960c404514a3674c
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  app.log
2
- config.json
2
+ config.json
3
+ *.gem
data/CHANGELOG.md CHANGED
@@ -1,2 +1,5 @@
1
+ ##0.0.3
2
+ * [pr2 handle pid change](https://github.com/sudo-recruit/moro/pull/2)
3
+
1
4
  ##0.0.2
2
5
  * complete basic cli
data/config.example.json CHANGED
@@ -2,5 +2,6 @@
2
2
  "processes": [{
3
3
  "name": "unicorn",
4
4
  "pid": "/Users/ocowchun/projects/github/jobboard/tmp/pids/server.pid"
5
- }]
5
+ }],
6
+ "interval": 30
6
7
  }
data/lib/moro/cli.rb CHANGED
@@ -2,9 +2,10 @@ require 'thor'
2
2
  require 'moro/version'
3
3
  require 'moro/monitor'
4
4
  require 'moro/daemon'
5
+ require 'json'
6
+
5
7
 
6
8
  module Moro
7
- # class << self
8
9
  class CLI< Thor
9
10
  map '--version' => :version
10
11
 
@@ -16,16 +17,34 @@ module Moro
16
17
  desc 'show', 'show process resource usage'
17
18
  option :config,:required => true,:banner=>"config.json"
18
19
  def show
19
- monitor=Monitor.new(options)
20
+ config=get_config(options[:config])
21
+ monitor=Monitor.new(config)
20
22
  monitor.show
21
23
  end
22
24
 
23
25
  desc 'start', 'start monitor process resource usage'
24
26
  option :config,:required => true,:banner=>"config.json"
25
27
  def start
26
- daemon=Daemon.new(options)
28
+ config=get_config(options[:config])
29
+ daemon=Daemon.new(config)
27
30
  daemon.start
28
31
  end
29
32
 
33
+ private
34
+
35
+ def get_config(file)
36
+ begin
37
+ data = ''
38
+ f = File.open(file, "r")
39
+ f.each_line do |line|
40
+ data += line
41
+ end
42
+ JSON.parse(data)
43
+ rescue => err
44
+ puts "#{err}"
45
+ nil
46
+ end
47
+ end
48
+
30
49
  end
31
50
  end
data/lib/moro/daemon.rb CHANGED
@@ -3,10 +3,17 @@ require 'moro/monitor'
3
3
  module Moro
4
4
  class Daemon
5
5
 
6
- def initialize(options)
7
- @monitor=Monitor.new(options)
6
+ def initialize(config)
7
+ @monitor=Monitor.new(config)
8
8
  log_file="app.log"
9
9
  @logger = Logger.new log_file
10
+ puts config
11
+
12
+ if config["interval"]!=nil
13
+ @interval=config["interval"]
14
+ else
15
+ @interval=30
16
+ end
10
17
  end
11
18
 
12
19
  def start()
@@ -24,7 +31,7 @@ module Moro
24
31
  @monitor.show
25
32
  @logger.info "stats memory"
26
33
 
27
- sleep(10)
34
+ sleep(@interval)
28
35
  end
29
36
  end
30
37
  end
data/lib/moro/monitor.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  require "logger"
2
- require 'json'
3
2
  require "get_process_mem"
3
+ require "moro/process"
4
4
 
5
5
  module Moro
6
6
  class Monitor
7
7
 
8
- def initialize(options)
8
+ def initialize(config)
9
9
  log_file="app.log"
10
- @config=options[:config]
10
+ @config=config
11
11
  @logger = Logger.new log_file
12
- @logger.info "momo show"
12
+ @logger.info "moro show"
13
13
  @processes=get_processes
14
14
  end
15
15
 
@@ -25,43 +25,15 @@ module Moro
25
25
  def monit
26
26
  data=[]
27
27
  @processes.each do |p|
28
- mem = GetProcessMem.new(p[:pid]).mb
29
- data<<{name:p[:name],memory:mem}
28
+ data << p.usage
30
29
  end
31
30
  data
32
31
  end
33
32
 
34
- def get_config
35
- begin
36
- data = ''
37
- f = File.open(@config, "r")
38
- f.each_line do |line|
39
- data += line
40
- end
41
- JSON.parse(data)
42
- rescue => err
43
- @logger.error "Exception: #{err}"
44
- puts "#{err}"
45
- nil
46
- end
47
- end
48
-
49
- def get_pid(filename)
50
- begin
51
- f = File.open(filename, "r")
52
- line = f.gets
53
- rescue => err
54
- @logger.error "Exception: #{err}"
55
- nil
56
- end
57
- end
58
-
59
33
  def get_processes()
60
- config=get_config()
61
34
  processes=[]
62
- config["processes"].each do|p|
63
- pid=get_pid(p["pid"])
64
- processes<<{name:p["name"],pid:pid} if pid!=nil
35
+ @config["processes"].each do|p|
36
+ processes<<Process.new({name:p["name"],file:p["pid"]})
65
37
  end
66
38
  processes
67
39
  end
@@ -0,0 +1,49 @@
1
+ require "get_process_mem"
2
+
3
+ module Moro
4
+ class Process
5
+ attr_reader :name,:pid,:file
6
+
7
+ def initialize(options)
8
+ log_file="app.log"
9
+ @logger = Logger.new log_file
10
+ @name=options[:name]
11
+ @file=options[:file]
12
+ update_pid
13
+ end
14
+
15
+ def usage
16
+ if pid!=nil
17
+ pm=GetProcessMem.new(pid)
18
+ #pid need to change
19
+ if pm.bytes==0
20
+ update_pid
21
+ end
22
+ pm=GetProcessMem.new(pid)
23
+ mem = pm.mb
24
+ {name:name,memory:mem}
25
+ else
26
+ update_pid
27
+ {name:name,memory:0.0}
28
+ end
29
+ end
30
+
31
+
32
+ private
33
+
34
+ def get_pid(filename)
35
+ begin
36
+ f = File.open(filename, "r")
37
+ line = f.gets
38
+ rescue => err
39
+ @logger.error "Exception: #{err}"
40
+ nil
41
+ end
42
+ end
43
+
44
+ def update_pid
45
+ @pid=get_pid(@file)
46
+ end
47
+
48
+ end
49
+ end
data/moro.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'moro'
3
- s.version = '0.0.2'
3
+ s.version = '0.0.3'
4
4
  s.date = '2016-02-24'
5
5
  s.summary = "moro is a simple daemon to monitor process memory usage"
6
6
  s.description = "moro is a simple daemon to monitor process memory usage"
data/script/build ADDED
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ gem build moro.gemspec
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ocowchun
@@ -50,14 +50,15 @@ files:
50
50
  - Gemfile
51
51
  - Gemfile.lock
52
52
  - README.md
53
- - app.rb
54
53
  - bin/moro
55
54
  - config.example.json
56
55
  - lib/moro/cli.rb
57
56
  - lib/moro/daemon.rb
58
57
  - lib/moro/monitor.rb
58
+ - lib/moro/process.rb
59
59
  - lib/moro/version.rb
60
60
  - moro.gemspec
61
+ - script/build
61
62
  homepage: https://github.com/sudo-recruit/moro
62
63
  licenses:
63
64
  - MIT
data/app.rb DELETED
@@ -1,58 +0,0 @@
1
- require "logger"
2
- require "get_process_mem"
3
- require 'json'
4
-
5
- @log_file="app.log"
6
- @logger = Logger.new @log_file
7
-
8
- def get_pid(filename)
9
- begin
10
- f = File.open(filename, "r")
11
- line = f.gets
12
- rescue => err
13
- @logger.error "Exception: #{err}"
14
- nil
15
- end
16
- end
17
-
18
- def get_config()
19
- begin
20
- data = ''
21
- f = File.open("config.json", "r")
22
- f.each_line do |line|
23
- data += line
24
- end
25
- JSON.parse(data)
26
- rescue => err
27
- @logger.error "Exception: #{err}"
28
- nil
29
- end
30
- end
31
-
32
- def get_processes()
33
- config=get_config()
34
- processes=[]
35
- config["processes"].each do|p|
36
- pid=get_pid(p["pid"])
37
- processes<<{name:p["name"],pid:pid} if pid!=nil
38
- end
39
- processes
40
- end
41
-
42
- def monit_all()
43
- processes=get_processes()
44
- while true
45
- processes.each do |p|
46
- puts mem = GetProcessMem.new(p[:pid]).inspect
47
- end
48
- @logger.info "stats memory"
49
-
50
- sleep(10)
51
- end
52
- end
53
-
54
- monit_all()
55
-
56
- at_exit do
57
- @logger.info "momo stop"
58
- end