instrumental_tools 0.2.1 → 0.3.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/bin/instrument_server +49 -8
- data/lib/instrumental_tools/version.rb +1 -1
- metadata +86 -59
data/bin/instrument_server
CHANGED
@@ -17,6 +17,10 @@ class SystemInspector
|
|
17
17
|
TYPES = [:gauges, :incrementors]
|
18
18
|
attr_accessor *TYPES
|
19
19
|
|
20
|
+
def self.memory
|
21
|
+
@memory ||= Memory.new
|
22
|
+
end
|
23
|
+
|
20
24
|
def initialize
|
21
25
|
@gauges = {}
|
22
26
|
@incrementors = {}
|
@@ -32,6 +36,8 @@ class SystemInspector
|
|
32
36
|
end
|
33
37
|
|
34
38
|
def load_all
|
39
|
+
self.class.memory.cycle
|
40
|
+
|
35
41
|
load @platform.load_cpu
|
36
42
|
load @platform.load_memory
|
37
43
|
load @platform.load_disks
|
@@ -146,14 +152,23 @@ class SystemInspector
|
|
146
152
|
end
|
147
153
|
|
148
154
|
def self.cpu
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
}
|
155
|
+
categories = [:user, :nice, :system, :idle, :iowait]
|
156
|
+
values = `cat /proc/stat | grep cpu[^0-9]`.chomp.split(/\s+/).slice(1, 5).map(&:to_f)
|
157
|
+
SystemInspector.memory.store(:cpu_values, values.dup)
|
158
|
+
if previous_values = SystemInspector.memory.retrieve(:cpu_values)
|
159
|
+
values.map!.with_index { |value, index| (previous_values[index] - value).abs }
|
160
|
+
end
|
161
|
+
data = Hash[*categories.zip(values).flatten]
|
162
|
+
total = values.inject { |memo, value| memo + value }
|
163
|
+
|
164
|
+
output = {}
|
165
|
+
if previous_values
|
166
|
+
data.each do |category, value|
|
167
|
+
output["cpu.#{category}"] = value / total * 100
|
168
|
+
end
|
169
|
+
end
|
170
|
+
output["cpu.in_use"] = 100 - data['idle'] / total * 100
|
171
|
+
output
|
157
172
|
end
|
158
173
|
|
159
174
|
def self.loadavg
|
@@ -240,6 +255,29 @@ class SystemInspector
|
|
240
255
|
}
|
241
256
|
end
|
242
257
|
end
|
258
|
+
|
259
|
+
class Memory
|
260
|
+
attr_reader :past_values, :current_values
|
261
|
+
|
262
|
+
def initialize
|
263
|
+
@past_values = {}
|
264
|
+
@current_values = {}
|
265
|
+
end
|
266
|
+
|
267
|
+
def store(attribute, value)
|
268
|
+
@current_values[attribute] = value
|
269
|
+
end
|
270
|
+
|
271
|
+
def retrieve(attribute)
|
272
|
+
@past_values[attribute]
|
273
|
+
end
|
274
|
+
|
275
|
+
def cycle
|
276
|
+
@past_values = @current_values
|
277
|
+
@current_values = {}
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
243
281
|
end
|
244
282
|
|
245
283
|
class ServerController < Pidly::Control
|
@@ -311,6 +349,9 @@ options = {
|
|
311
349
|
|
312
350
|
option_parser = OptionParser.new do |opts|
|
313
351
|
opts.banner = "Usage: instrument_server [-k API_KEY] [options] [-d #{ServerController::COMMANDS.join('|')}]"
|
352
|
+
opts.on('-H', '--hostname HOSTNAME', 'Hostname to report as') do |hostname|
|
353
|
+
options[:hostname] = hostname
|
354
|
+
end
|
314
355
|
opts.on('-k', '--api_key API_KEY', 'API key of your project') do |api_key|
|
315
356
|
options[:api_key] = api_key
|
316
357
|
end
|
metadata
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: instrumental_tools
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Elijah Miller
|
9
14
|
- Christopher Zelenak
|
10
15
|
- Kristopher Chambers
|
@@ -12,62 +17,80 @@ authors:
|
|
12
17
|
autorequire:
|
13
18
|
bindir: bin
|
14
19
|
cert_chain: []
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
requirement: &70269861069500 !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
|
-
requirements:
|
22
|
-
- - ! '>='
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '0'
|
20
|
+
|
21
|
+
date: 2012-01-11 00:00:00 Z
|
22
|
+
dependencies:
|
23
|
+
- !ruby/object:Gem::Dependency
|
25
24
|
type: :runtime
|
26
|
-
|
27
|
-
version_requirements: *70269861069500
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: instrumental_agent
|
30
|
-
requirement: &70269861068720 !ruby/object:Gem::Requirement
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
31
26
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
name: json
|
35
|
+
version_requirements: *id001
|
36
|
+
prerelease: false
|
37
|
+
- !ruby/object:Gem::Dependency
|
36
38
|
type: :runtime
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 1
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
- 5
|
48
|
+
version: "0.5"
|
49
|
+
name: instrumental_agent
|
50
|
+
version_requirements: *id002
|
37
51
|
prerelease: false
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
requirement: &70269861067960 !ruby/object:Gem::Requirement
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
type: :runtime
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
55
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 29
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
- 1
|
63
|
+
- 3
|
46
64
|
version: 0.1.3
|
47
|
-
|
65
|
+
name: pidly
|
66
|
+
version_requirements: *id003
|
48
67
|
prerelease: false
|
49
|
-
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: rake
|
52
|
-
requirement: &70269861067240 !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ! '>='
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '0'
|
68
|
+
- !ruby/object:Gem::Dependency
|
58
69
|
type: :development
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
name: rake
|
80
|
+
version_requirements: *id004
|
59
81
|
prerelease: false
|
60
|
-
version_requirements: *70269861067240
|
61
82
|
description: Tools for displaying information from and reporting to Instrumental (instrumentalapp.com)
|
62
|
-
email:
|
83
|
+
email:
|
63
84
|
- support@instrumentalapp.com
|
64
|
-
executables:
|
85
|
+
executables:
|
65
86
|
- gitstrumental
|
66
87
|
- instrument_server
|
67
88
|
- instrumental
|
68
89
|
extensions: []
|
90
|
+
|
69
91
|
extra_rdoc_files: []
|
70
|
-
|
92
|
+
|
93
|
+
files:
|
71
94
|
- .gitignore
|
72
95
|
- Gemfile
|
73
96
|
- README.md
|
@@ -79,32 +102,36 @@ files:
|
|
79
102
|
- lib/instrumental_tools/version.rb
|
80
103
|
homepage: http://github.com/fastestforward/instrumental_tools
|
81
104
|
licenses: []
|
105
|
+
|
82
106
|
post_install_message:
|
83
107
|
rdoc_options: []
|
84
|
-
|
108
|
+
|
109
|
+
require_paths:
|
85
110
|
- lib
|
86
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
112
|
none: false
|
88
|
-
requirements:
|
89
|
-
- -
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
|
92
|
-
segments:
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
hash: 3
|
117
|
+
segments:
|
93
118
|
- 0
|
94
|
-
|
95
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
version: "0"
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
121
|
none: false
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
segments:
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
hash: 3
|
126
|
+
segments:
|
102
127
|
- 0
|
103
|
-
|
128
|
+
version: "0"
|
104
129
|
requirements: []
|
130
|
+
|
105
131
|
rubyforge_project:
|
106
132
|
rubygems_version: 1.8.10
|
107
133
|
signing_key:
|
108
134
|
specification_version: 3
|
109
135
|
summary: Command line tools for Instrumental
|
110
136
|
test_files: []
|
137
|
+
|