warcorrespondent 0.1.2 → 0.2.0

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.
data/Rakefile CHANGED
@@ -12,6 +12,7 @@ begin
12
12
  gem.authors = ["Stefan Maier"]
13
13
  gem.add_dependency("json")
14
14
  gem.add_dependency("daemons")
15
+ gem.add_dependency("systeminformation")
15
16
  end
16
17
  Jeweler::GemcutterTasks.new
17
18
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
data/bin/warcorrespondent CHANGED
File without changes
@@ -1,6 +1,7 @@
1
1
  require 'warcorrespondent/reporter.rb'
2
2
  require 'warcorrespondent/uplink.rb'
3
3
  require 'json'
4
+ require 'systeminformation'
4
5
  require 'yaml'
5
6
 
6
7
  module WarCorrespondent
@@ -45,4 +46,4 @@ module WarCorrespondent
45
46
  def self.update(message)
46
47
  @@uplink.add(message)
47
48
  end
48
- end
49
+ end
@@ -39,6 +39,6 @@ module WarCorrespondent
39
39
 
40
40
  end
41
41
 
42
- Dir.glob(File.dirname(__FILE__) + "/reporters/**/*.rb") do |i|
42
+ Dir.glob(File.dirname(__FILE__) + "/reporters/*.rb") do |i|
43
43
  require i
44
44
  end
@@ -0,0 +1,18 @@
1
+ module WarCorrespondent
2
+ module Reporters
3
+ module Linux
4
+ class CPU < WarCorrespondent::Reporter
5
+ def initialize(args)
6
+ @block = Proc.new do
7
+ SystemInformation::cpu.map{ |cpu_id,data|
8
+ data.map{ |type, value|
9
+ {:identifier => "cpu:#{cpu_id.to_s}:#{type.to_s}", :value => value }
10
+ }
11
+ }.inject([]){|a,b| a+b}
12
+ end
13
+ super(args)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ module WarCorrespondent
2
+ module Reporters
3
+ module Linux
4
+ class LoadAvg < WarCorrespondent::Reporter
5
+ def initialize(args)
6
+
7
+ @block = Proc.new do
8
+ load = SystemInformation::load
9
+ [
10
+ {:identifier => "load:1", :type => "float", :value => load[:load_1]},
11
+ {:identifier => "load:5", :type => "float", :value => load[:load_5]},
12
+ {:identifier => "load:15", :type => "float", :value => load[:load_15]},
13
+ {:identifier => "processes:running", :type => "integer", :value => load[:procs_running]},
14
+ {:identifier => "processes:total", :type => "integer", :value => load[:procs_total]}
15
+ ]
16
+ end
17
+ super(args)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ module WarCorrespondent
2
+ module Reporters
3
+ module Linux
4
+ class Memory < WarCorrespondent::Reporter
5
+ def initialize(args)
6
+ @block = Proc.new do
7
+ mem_items = {:free => :free, :cached => :cached, :buffers => :buffers, :total => :total, :used => :used}
8
+ swap_items = {:swaptotal => :total, :swapfree => :free, :swapused => :used}
9
+ memory = SystemInformation::memory
10
+ mem_items = mem_items.map{|k,v| {:identifier => "mem:#{v.to_s}", :value => memory[k]}}
11
+ swap_items = swap_items.map{|k,v| {:identifier => "swap:#{v.to_s}", :value => memory[k]}}
12
+ mem_items + swap_items
13
+ end
14
+ super(args)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ module WarCorrespondent
2
+ module Reporters
3
+ module Linux
4
+ class Net < WarCorrespondent::Reporter
5
+ def initialize(args)
6
+ @block = Proc.new do
7
+ SystemInformation::net.map{ |net_id,data|
8
+ data.map{ |type, value|
9
+ {:identifier => "net:#{net_id.to_s}:#{type.to_s}", :value => value }
10
+ }
11
+ }.inject([]){|a,b|a+b}
12
+ end
13
+ super(args)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -4,11 +4,7 @@ module WarCorrespondent
4
4
  def initialize(args)
5
5
 
6
6
  @block = Proc.new do
7
- count = 0
8
- IO.popen('who') do |p|
9
- count = p.readlines.size
10
- end
11
- {:identifier => "users", :value => count, :type => "integer" }
7
+ {:identifier => "users", :value => SystemInformation::users }
12
8
  end
13
9
 
14
10
  super(args)
@@ -46,4 +46,4 @@ module WarCorrespondent
46
46
  end
47
47
 
48
48
  end
49
- end
49
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warcorrespondent
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 1
8
8
  - 2
9
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Stefan Maier
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-18 00:00:00 +02:00
18
+ date: 2010-06-09 00:00:00 +02:00
18
19
  default_executable: warcorrespondent
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: json
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -33,14 +36,30 @@ dependencies:
33
36
  name: daemons
34
37
  prerelease: false
35
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - ">="
38
42
  - !ruby/object:Gem::Version
43
+ hash: 3
39
44
  segments:
40
45
  - 0
41
46
  version: "0"
42
47
  type: :runtime
43
48
  version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: systeminformation
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
44
63
  description: warcorrespondent collects data and reports it back to warroom.
45
64
  email: stefanmaier@gmail.com
46
65
  executables:
@@ -60,10 +79,10 @@ files:
60
79
  - bin/warcorrespondent
61
80
  - lib/warcorrespondent.rb
62
81
  - lib/warcorrespondent/reporter.rb
63
- - lib/warcorrespondent/reporters/linux/cpu.rb
64
- - lib/warcorrespondent/reporters/linux/loadavg.rb
65
- - lib/warcorrespondent/reporters/linux/memory.rb
66
- - lib/warcorrespondent/reporters/linux/net.rb
82
+ - lib/warcorrespondent/reporters/cpu.rb
83
+ - lib/warcorrespondent/reporters/loadavg.rb
84
+ - lib/warcorrespondent/reporters/memory.rb
85
+ - lib/warcorrespondent/reporters/net.rb
67
86
  - lib/warcorrespondent/reporters/users.rb
68
87
  - lib/warcorrespondent/uplink.rb
69
88
  has_rdoc: true
@@ -76,23 +95,27 @@ rdoc_options:
76
95
  require_paths:
77
96
  - lib
78
97
  required_ruby_version: !ruby/object:Gem::Requirement
98
+ none: false
79
99
  requirements:
80
100
  - - ">="
81
101
  - !ruby/object:Gem::Version
102
+ hash: 3
82
103
  segments:
83
104
  - 0
84
105
  version: "0"
85
106
  required_rubygems_version: !ruby/object:Gem::Requirement
107
+ none: false
86
108
  requirements:
87
109
  - - ">="
88
110
  - !ruby/object:Gem::Version
111
+ hash: 3
89
112
  segments:
90
113
  - 0
91
114
  version: "0"
92
115
  requirements: []
93
116
 
94
117
  rubyforge_project:
95
- rubygems_version: 1.3.6
118
+ rubygems_version: 1.3.7
96
119
  signing_key:
97
120
  specification_version: 3
98
121
  summary: warcorrespondent reports to the warroom.
@@ -1,42 +0,0 @@
1
- module WarCorrespondent
2
- module Reporters
3
- module Linux
4
- class CPU < WarCorrespondent::Reporter
5
- def initialize(args)
6
- @block = Proc.new do
7
- get_data = Proc.new do
8
- data = nil
9
- File.open('/proc/stat','r') do |f|
10
- f.readlines.select{|l| l =~ /^cpu /}.each do |l|
11
- data = l.split
12
- data.shift
13
- end
14
- end
15
- data
16
- end
17
- if !@prev_data
18
- @prev_data = get_data.call
19
- sleep 5
20
- end
21
- @new_data = get_data.call
22
- difference = @prev_data.zip(@new_data).map{|i| i[1].to_f - i[0].to_f}
23
- sum = difference.inject{|a,b| a+b}
24
- difference.map!{|i| i/sum}
25
- @prev_data = @new_data
26
- [
27
- {:identifier => "cpu:user", :type => "float", :value => difference[0]},
28
- {:identifier => "cpu:nice", :type => "float", :value => difference[1]},
29
- {:identifier => "cpu:system", :type => "float", :value => difference[2]},
30
- {:identifier => "cpu:idle", :type => "float", :value => difference[3]},
31
- {:identifier => "cpu:running", :type => "float", :value => difference[4]},
32
- {:identifier => "cpu:iowait", :type => "float", :value => difference[5]},
33
- {:identifier => "cpu:irq", :type => "float", :value => difference[6]},
34
- {:identifier => "cpu:softirq", :type => "float", :value => difference[7]}
35
- ]
36
- end
37
- super(args)
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,26 +0,0 @@
1
- module WarCorrespondent
2
- module Reporters
3
- module Linux
4
- class LoadAvg < WarCorrespondent::Reporter
5
- def initialize(args)
6
-
7
- @block = Proc.new do
8
- File.open('/proc/loadavg','r') do |f|
9
- line = f.readline
10
- load_one_min, load_five_min, load_fivteen_min, processes = line.split
11
- processes_running, processes_total = processes.split('/')
12
- [
13
- {:identifier => "load:1", :type => "float", :value => load_one_min},
14
- {:identifier => "load:5", :type => "float", :value => load_five_min},
15
- {:identifier => "load:15", :type => "float", :value => load_fivteen_min},
16
- {:identifier => "processes:running", :type => "integer", :value => processes_running},
17
- {:identifier => "processes:total", :type => "integer", :value => processes_total}
18
- ]
19
- end
20
- end
21
- super(args)
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,36 +0,0 @@
1
- module WarCorrespondent
2
- module Reporters
3
- module Linux
4
- class Memory < WarCorrespondent::Reporter
5
- def initialize(args)
6
- @block = Proc.new do
7
- items = {
8
- 'mem:free' => 'MemFree',
9
- 'mem:cached' => 'Cached',
10
- 'mem:buffers' => 'Buffers',
11
- 'mem:total' => 'MemTotal',
12
- 'swap:total' => 'SwapTotal',
13
- 'swap:free' => 'SwapFree'
14
-
15
- }
16
- File.open('/proc/meminfo','r') do |f|
17
- f.readlines.each do |l|
18
- items.each_pair do |i, k|
19
- if matches = Regexp.new("#{k}: +([0-9]+)").match(l)
20
- items[i] = matches[1].to_i
21
- end
22
- end
23
- end
24
- items['mem:used'] = items['mem:total'] - items['mem:free'] - items['mem:cached'] - items['mem:buffers']
25
- items['swap:used'] = items['mem:total'] - items['mem:free']
26
- end
27
- items.map{|k,v|
28
- {:identifier => k, :value => v, :type => "integer", :unit => "kB"}
29
- }
30
- end
31
- super(args)
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,46 +0,0 @@
1
- module WarCorrespondent
2
- module Reporters
3
- module Linux
4
- class Net < WarCorrespondent::Reporter
5
- def initialize(args)
6
- @block = Proc.new do
7
- get_data = Proc.new do
8
- delta = nil
9
- data = {}
10
- File.open('/proc/net/dev','r') do |f|
11
- f.readlines.select{|l| l =~ /:/}.each do |l|
12
- l.gsub!(/ +/,' ').strip!
13
- id, body = l.split(':')
14
- body = body.strip.split
15
- data[id] = [body[0],body[1],body[8],body[9]]
16
- end
17
- end
18
- data
19
- end
20
- if !@prev_data
21
- @prev_data = get_data.call
22
- delta = 5
23
- sleep 5
24
- end
25
- delta ||= timeout
26
- @new_data = get_data.call
27
- difference ={}
28
- @prev_data.keys.each{|k|
29
- difference[k] = @prev_data[k].zip(@new_data[k]).map{|i| (i[1].to_f - i[0].to_f)/delta}
30
- }
31
- @prev_data = @new_data
32
- result=[]
33
- difference.each{|k,body|
34
- result << {:identifier => "net:#{k}:rbytes", :value => body[0], :type => "integer"}
35
- result << {:identifier => "net:#{k}:rpackets", :value => body[1], :type => "integer"}
36
- result << {:identifier => "net:#{k}:sbytes", :value => body[2], :type => "integer"}
37
- result << {:identifier => "net:#{k}:spackets", :value => body[3], :type => "integer"}
38
- }
39
- result
40
- end
41
- super(args)
42
- end
43
- end
44
- end
45
- end
46
- end