heartbeat-client 0.2.2 → 0.2.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.
- data/Gemfile +1 -0
- data/Gemfile.lock +6 -0
- data/Rakefile +2 -0
- data/VERSION +1 -1
- data/lib/heartbeat-client.rb +55 -7
- metadata +57 -15
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -2,6 +2,9 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
daemons (1.1.4)
|
5
|
+
foreman (0.30.1)
|
6
|
+
term-ansicolor (~> 1.0.5)
|
7
|
+
thor (>= 0.13.6)
|
5
8
|
git (1.2.5)
|
6
9
|
httparty (0.8.1)
|
7
10
|
multi_json
|
@@ -15,6 +18,8 @@ GEM
|
|
15
18
|
rake (0.9.2.2)
|
16
19
|
rcov (0.9.11)
|
17
20
|
shoulda (2.11.3)
|
21
|
+
term-ansicolor (1.0.7)
|
22
|
+
thor (0.14.6)
|
18
23
|
|
19
24
|
PLATFORMS
|
20
25
|
ruby
|
@@ -22,6 +27,7 @@ PLATFORMS
|
|
22
27
|
DEPENDENCIES
|
23
28
|
bundler (~> 1.0.0)
|
24
29
|
daemons
|
30
|
+
foreman
|
25
31
|
httparty
|
26
32
|
jeweler (~> 1.5.2)
|
27
33
|
rcov
|
data/Rakefile
CHANGED
@@ -21,6 +21,8 @@ Jeweler::Tasks.new do |gem|
|
|
21
21
|
gem.authors = ["Oliver Kiessler"]
|
22
22
|
gem.add_runtime_dependency 'daemons'
|
23
23
|
gem.add_runtime_dependency 'httparty'
|
24
|
+
gem.add_runtime_dependency 'json'
|
25
|
+
gem.add_runtime_dependency 'foreman'
|
24
26
|
end
|
25
27
|
Jeweler::RubygemsDotOrgTasks.new
|
26
28
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
data/lib/heartbeat-client.rb
CHANGED
@@ -25,6 +25,9 @@ class Heartbeat
|
|
25
25
|
load_avg = []
|
26
26
|
cpu_usage = {'user' => 0, 'sys' => 0, 'idle' => 0}
|
27
27
|
processes = []
|
28
|
+
memory = {'free' => 0, 'used' => 0}
|
29
|
+
disks = {}
|
30
|
+
swap = {'free' => 0, 'used' => 0}
|
28
31
|
|
29
32
|
if is_linux?
|
30
33
|
`top -b -n1 > /tmp/top.out`
|
@@ -32,6 +35,8 @@ class Heartbeat
|
|
32
35
|
`top -l 1 > /tmp/top.out`
|
33
36
|
end
|
34
37
|
|
38
|
+
`df -m > /tmp/dfm.out`
|
39
|
+
|
35
40
|
if File.exists?('/tmp/top.out')
|
36
41
|
counter = 0; proc_count = 0
|
37
42
|
File.open("/tmp/top.out", "r") do |infile|
|
@@ -40,17 +45,30 @@ class Heartbeat
|
|
40
45
|
processes(procs, line) if line.include?('Task')
|
41
46
|
load_averages(load_avg, line) if line.include?('load average')
|
42
47
|
cpu_usages(cpu_usage, line) if line.include?('Cpu')
|
48
|
+
memory_usage(memory, line) if line.include?('Mem')
|
49
|
+
swap_usage(swap, line) if line.include?('Swap')
|
43
50
|
proc_count = counter + 1 if line.include?('PID') and line.include?('COMMAND')
|
44
51
|
else
|
45
52
|
processes(procs, line) if line.include?('Processes')
|
46
53
|
load_averages(load_avg, line) if line.include?('Load Avg')
|
47
54
|
cpu_usages(cpu_usage, line) if line.include?('CPU usage')
|
55
|
+
memory_usage(memory, line) if line.include?('PhysMem')
|
48
56
|
proc_count = counter + 1 if line.include?('PID') and line.include?('COMMAND')
|
49
57
|
end
|
50
58
|
process(processes, line) if proc_count > 0 and counter >= proc_count
|
51
59
|
counter += 1
|
52
60
|
end
|
53
61
|
end
|
62
|
+
|
63
|
+
if File.exists?('/tmp/dfm.out')
|
64
|
+
File.open("/tmp/dfm.out", "r") do |infile|
|
65
|
+
counter = 0
|
66
|
+
while (line = infile.gets)
|
67
|
+
disk_usage(disks, line) if counter > 0
|
68
|
+
counter += 1
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
54
72
|
|
55
73
|
options = {
|
56
74
|
:body => {
|
@@ -62,16 +80,21 @@ class Heartbeat
|
|
62
80
|
:process_stats => procs,
|
63
81
|
:load_avg => load_avg,
|
64
82
|
:cpu_usage => cpu_usage,
|
65
|
-
:processes => processes
|
83
|
+
:processes => processes,
|
84
|
+
:memory => memory,
|
85
|
+
:disks => disks,
|
86
|
+
:swap => swap
|
66
87
|
}
|
67
88
|
}
|
68
89
|
}
|
69
90
|
}
|
70
91
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
92
|
+
puts procs.inspect
|
93
|
+
puts load_avg.inspect
|
94
|
+
puts cpu_usage.inspect
|
95
|
+
puts processes.inspect
|
96
|
+
puts memory.inspect
|
97
|
+
puts disks.inspect
|
75
98
|
|
76
99
|
Heartbeat.post('/heartbeat', options)
|
77
100
|
else
|
@@ -114,10 +137,35 @@ class Heartbeat
|
|
114
137
|
end
|
115
138
|
end
|
116
139
|
|
117
|
-
def self.process(processes,
|
118
|
-
procs =
|
140
|
+
def self.process(processes, str)
|
141
|
+
procs = str.split(' ')
|
119
142
|
if procs and procs.size > 0
|
120
143
|
processes << (is_linux? ? procs[11].strip : procs[1].strip)
|
121
144
|
end
|
122
145
|
end
|
146
|
+
|
147
|
+
def self.memory_usage(memory, str)
|
148
|
+
mem = str.split(':')
|
149
|
+
if mem and mem[0]
|
150
|
+
mem[1].split(',').each do |m|
|
151
|
+
memory['free'] = m.split(' ')[0].strip if m.include?('free')
|
152
|
+
memory['used'] = m.split(' ')[0].strip if m.include?('used')
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def self.swap_usage(swap, str)
|
158
|
+
sw = str.split(':')
|
159
|
+
if sw and sw[0]
|
160
|
+
sw[1].split(',').each do |s|
|
161
|
+
swap['free'] = s.split(' ')[0].strip if s.include?('free')
|
162
|
+
swap['used'] = s.split(' ')[0].strip if s.include?('used')
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def self.disk_usage(disks, str)
|
168
|
+
ds = str.split(' ')
|
169
|
+
disks[ds[0].strip] = {'used' => ds[2].strip, 'available' => ds[3].strip}
|
170
|
+
end
|
123
171
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heartbeat-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 3
|
10
|
+
version: 0.2.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Oliver Kiessler
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-01-
|
18
|
+
date: 2012-01-07 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -55,12 +55,26 @@ dependencies:
|
|
55
55
|
segments:
|
56
56
|
- 0
|
57
57
|
version: "0"
|
58
|
-
name:
|
58
|
+
name: foreman
|
59
59
|
prerelease: false
|
60
|
-
type: :
|
60
|
+
type: :runtime
|
61
61
|
requirement: *id003
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
name: shoulda
|
73
|
+
prerelease: false
|
74
|
+
type: :development
|
75
|
+
requirement: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
64
78
|
none: false
|
65
79
|
requirements:
|
66
80
|
- - ~>
|
@@ -74,9 +88,9 @@ dependencies:
|
|
74
88
|
name: bundler
|
75
89
|
prerelease: false
|
76
90
|
type: :development
|
77
|
-
requirement: *
|
91
|
+
requirement: *id005
|
78
92
|
- !ruby/object:Gem::Dependency
|
79
|
-
version_requirements: &
|
93
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
80
94
|
none: false
|
81
95
|
requirements:
|
82
96
|
- - ~>
|
@@ -90,9 +104,9 @@ dependencies:
|
|
90
104
|
name: jeweler
|
91
105
|
prerelease: false
|
92
106
|
type: :development
|
93
|
-
requirement: *
|
107
|
+
requirement: *id006
|
94
108
|
- !ruby/object:Gem::Dependency
|
95
|
-
version_requirements: &
|
109
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
96
110
|
none: false
|
97
111
|
requirements:
|
98
112
|
- - ">="
|
@@ -104,9 +118,9 @@ dependencies:
|
|
104
118
|
name: rcov
|
105
119
|
prerelease: false
|
106
120
|
type: :development
|
107
|
-
requirement: *
|
121
|
+
requirement: *id007
|
108
122
|
- !ruby/object:Gem::Dependency
|
109
|
-
version_requirements: &
|
123
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
110
124
|
none: false
|
111
125
|
requirements:
|
112
126
|
- - ">="
|
@@ -118,9 +132,9 @@ dependencies:
|
|
118
132
|
name: daemons
|
119
133
|
prerelease: false
|
120
134
|
type: :runtime
|
121
|
-
requirement: *
|
135
|
+
requirement: *id008
|
122
136
|
- !ruby/object:Gem::Dependency
|
123
|
-
version_requirements: &
|
137
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
124
138
|
none: false
|
125
139
|
requirements:
|
126
140
|
- - ">="
|
@@ -132,7 +146,35 @@ dependencies:
|
|
132
146
|
name: httparty
|
133
147
|
prerelease: false
|
134
148
|
type: :runtime
|
135
|
-
requirement: *
|
149
|
+
requirement: *id009
|
150
|
+
- !ruby/object:Gem::Dependency
|
151
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
152
|
+
none: false
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
hash: 3
|
157
|
+
segments:
|
158
|
+
- 0
|
159
|
+
version: "0"
|
160
|
+
name: json
|
161
|
+
prerelease: false
|
162
|
+
type: :runtime
|
163
|
+
requirement: *id010
|
164
|
+
- !ruby/object:Gem::Dependency
|
165
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
hash: 3
|
171
|
+
segments:
|
172
|
+
- 0
|
173
|
+
version: "0"
|
174
|
+
name: foreman
|
175
|
+
prerelease: false
|
176
|
+
type: :runtime
|
177
|
+
requirement: *id011
|
136
178
|
description: Heartbeat Client in Ruby
|
137
179
|
email: kiessler@inceedo.com
|
138
180
|
executables:
|