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 +4 -4
- data/.gitignore +2 -1
- data/CHANGELOG.md +3 -0
- data/config.example.json +2 -1
- data/lib/moro/cli.rb +22 -3
- data/lib/moro/daemon.rb +10 -3
- data/lib/moro/monitor.rb +7 -35
- data/lib/moro/process.rb +49 -0
- data/moro.gemspec +1 -1
- data/script/build +3 -0
- metadata +3 -2
- data/app.rb +0 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2974d4de962f4ea5717ce2d63b1bdb5fafac8edf
|
4
|
+
data.tar.gz: 49ca4d68746d851f02653c2fcf0b809857f565e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04173525eb6b45a3f9dfdca18087f3f058dc267a8940009714721c3271fe5a55ef13b7436ec9231bb509694e54a1946cb82cf876390b5b358d71aee5f97a2361
|
7
|
+
data.tar.gz: cfb94d1b29dd50f66f80abd72e2bef76ef65b5777a318f647be94d8214b60f0a9ac9711fa5f3c64f248abe8da2e5b56ba6dad2e84b7b70ef960c404514a3674c
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/config.example.json
CHANGED
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
|
-
|
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
|
-
|
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(
|
7
|
-
@monitor=Monitor.new(
|
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(
|
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(
|
8
|
+
def initialize(config)
|
9
9
|
log_file="app.log"
|
10
|
-
@config=
|
10
|
+
@config=config
|
11
11
|
@logger = Logger.new log_file
|
12
|
-
@logger.info "
|
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
|
-
|
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
|
-
|
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
|
data/lib/moro/process.rb
ADDED
@@ -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
data/script/build
ADDED
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.
|
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
|