systemstats 0.1.dev → 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.
Binary file
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
+ # Specify your gem's dependencies in systemstats.gemspec
1
2
  source 'https://rubygems.org'
2
3
 
3
- # Specify your gem's dependencies in systemstats.gemspec
4
- gemspec
@@ -0,0 +1,49 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ systemstats (0.3.dev)
5
+ activesupport
6
+ git
7
+ json
8
+ thor
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ activesupport (3.2.13)
14
+ i18n (= 0.6.1)
15
+ multi_json (~> 1.0)
16
+ columnize (0.3.6)
17
+ diff-lcs (1.1.3)
18
+ git (1.2.5)
19
+ i18n (0.6.1)
20
+ json (1.8.0)
21
+ linecache (0.46)
22
+ rbx-require-relative (> 0.0.4)
23
+ multi_json (1.7.4)
24
+ rake (10.0.3)
25
+ rbx-require-relative (0.0.9)
26
+ rspec (2.10.0)
27
+ rspec-core (~> 2.10.0)
28
+ rspec-expectations (~> 2.10.0)
29
+ rspec-mocks (~> 2.10.0)
30
+ rspec-core (2.10.1)
31
+ rspec-expectations (2.10.0)
32
+ diff-lcs (~> 1.1.3)
33
+ rspec-mocks (2.10.1)
34
+ ruby-debug (0.10.4)
35
+ columnize (>= 0.1)
36
+ ruby-debug-base (~> 0.10.4.0)
37
+ ruby-debug-base (0.10.4)
38
+ linecache (>= 0.3)
39
+ thor (0.18.1)
40
+
41
+ PLATFORMS
42
+ ruby
43
+
44
+ DEPENDENCIES
45
+ bundler (~> 1.3)
46
+ rake
47
+ rspec
48
+ ruby-debug
49
+ systemstats!
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 Dave Golombek
1
+ Copyright (c) 2012 Ivan Marcin
2
2
 
3
3
  MIT License
4
4
 
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'systemstats'
3
+
4
+ SystemStats::CapacityCollector.start
@@ -3,4 +3,7 @@ $LOAD_PATH << File.dirname(__FILE__)
3
3
 
4
4
  require 'systemstats/iostat_reader'
5
5
  require 'systemstats/os_detect'
6
- require 'systemstats/version'
6
+ require 'systemstats/cpu'
7
+ require 'systemstats/disk'
8
+ require 'systemstats/version'
9
+ require 'systemstats/capacity_collector'
@@ -0,0 +1,108 @@
1
+ require 'thor'
2
+
3
+ class SystemStats::CapacityCollector < Thor
4
+ desc "version", "Report the current version"
5
+ def version
6
+ puts SystemStats::VERSION
7
+ end
8
+
9
+ option :output_path, :required => true
10
+ option :output_file_prefix, :required => true
11
+ option :interval_seconds, :required => true, :type => :numeric
12
+ option :max_runtime, :required => true, :type => :numeric
13
+ option :start_delay, :required => false
14
+ option :store_to_mongo, :required => false, :type => :boolean
15
+ option :mongo_settings_yaml,:required => false
16
+ desc 'collect', "Start a system statistic collection."
17
+ def collect
18
+ file = get_output_file(options.output_path, options.output_file_prefix)
19
+ if options.start_delay
20
+ puts "Delaying collection start by #{options.start_delay} seconds"
21
+ sleep(options.start_delay)
22
+ end
23
+ start_capacity_collection(options.interval_seconds, options.max_runtime, file)
24
+ end
25
+
26
+
27
+ private
28
+ # Create the output file.
29
+ def get_output_file(path, prefix)
30
+ filename = File.join(path, "#{prefix}_#{Time.now.strftime('%m_%d_%y__%H_%M')}.csv")
31
+ file = nil
32
+ if File.exists? filename
33
+ puts "Error: file #{filename} already exists."
34
+ SystemExit
35
+ end
36
+
37
+ puts "Saving output to: #{filename}"
38
+ file = File.open(filename, "w+")
39
+ end
40
+
41
+ def start_capacity_collection(interval_in_seconds, max_runtime_in_seconds, output_file)
42
+
43
+ if interval_in_seconds.to_i < 1
44
+ puts "Error: The collection interval can't be less than 1 second"
45
+ SystemExit
46
+ end
47
+
48
+ collection_end_time = Time.now + max_runtime_in_seconds
49
+ seconds_elapsed = 0
50
+ while (Time.now < collection_end_time)
51
+ percentage = (seconds_elapsed * 100) / max_runtime_in_seconds
52
+ STDOUT.write "Collecting counters: #{percentage}% done...\r"
53
+
54
+ output_file.write(get_counter_values)
55
+ output_file.write("\n")
56
+
57
+ seconds_elapsed += interval_in_seconds
58
+ sleep(interval_in_seconds)
59
+ end
60
+ puts "Collection done."
61
+ end
62
+
63
+ #todo - make it dynamic to load a list of what to collect from a config.
64
+ #Retrieves the list of counter values from the counter dict.
65
+ def get_counter_values
66
+ line = ""
67
+ #cpu
68
+ if @cpu_counters.nil?
69
+ @cpu_counters = get_cpu_counter_list
70
+ end
71
+ @cpu_counters.each_key {|key| line += "#{SystemStats::CPU.send(@cpu_counters[key])}," }
72
+
73
+ #disk
74
+ if @disk_counters.nil?
75
+ @disk_counters = get_disk_counter_list
76
+ end
77
+ @disk_counters.each_key {|key| line += "#{SystemStats::Disk.send(@disk_counters[key])}," }
78
+
79
+ return line
80
+ end
81
+
82
+ # Returns the list of CPU counters to monitor
83
+ def get_cpu_counter_list
84
+ counters = Hash.new
85
+ counters[0] = "user_average"
86
+ counters[1] = "system_average"
87
+ counters[2] = "idle_average"
88
+ return counters
89
+ end
90
+
91
+ # Returns the list of Disk counters to monitor
92
+ def get_disk_counter_list
93
+ counters = Hash.new
94
+ counters[0] = "read_request_queue_merges"
95
+ counters[1] = "write_request_queue_merges"
96
+ counters[2] = "reads_per_second"
97
+ counters[3] = "writes_per_second"
98
+ counters[4] = "read_sectors_per_second"
99
+ counters[5] = "write_sectors_per_second"
100
+ counters[6] = "average_request_queue_size"
101
+ counters[7] = "average_queue_lenght"
102
+ counters[8] = "average_io_wait_in_millis"
103
+ counters[9] = "read_request_wait_in_millis"
104
+ counters[10] = "write_request_wait_in_millis"
105
+ counters[11] = "bandwidth_use_in_cpu_time_percentage"
106
+ return counters
107
+ end
108
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module SystemStats
3
+ class CPU
4
+
5
+ # Returns de User average cpu use percentage
6
+ def self.user_average
7
+ IoStatReader.cpu_user_average
8
+ end
9
+
10
+ # Returns the system Cpu average use percentage
11
+ def self.system_average
12
+ IoStatReader.cpu_system_average
13
+ end
14
+
15
+ # Returns the user Cpu average idle time percentage
16
+ def self.idle_average
17
+ IoStatReader.cpu_idle_average
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,86 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module SystemStats
3
+ class Disk
4
+ # Returns the user's Kilobytes per transfer
5
+ # Disk id is the numeric ID in osx, disk type in linux
6
+ # OSX: disk0 => '0', Linux => disk 0 => 'sda'
7
+ def self.kb_per_transfer_mac_only(disk_id)
8
+ IoStatReader.read_iostats(disk_id)[:disk][0]
9
+ end
10
+
11
+ # Returns the number of current transfers per second for a disk
12
+ # Disk id is the numeric ID in osx, disk type in linux
13
+ # OSX: disk0 => '0', Linux => disk 0 => 'sda'
14
+ def self.transfers_per_second_mac_only(disk_id)
15
+ IoStatReader.read_iostats(disk_id)[:disk][1]
16
+ end
17
+
18
+ # Returns the current number of megabytes transfered on a disk per second
19
+ # Disk id is the numeric ID in osx, disk type in linux
20
+ # OSX: disk0 => '0', Linux => disk 0 => 'sda'
21
+ def self.megabytes_per_second_mac_only(disk_id)
22
+ IoStatReader.read_iostats(disk_id)[:disk][2]
23
+ end
24
+
25
+ # Number of read requests merged into the device per second.
26
+ def self.read_request_queue_merges(disk_id = 'sda')
27
+ IoStatReader.read_iostats(disk_id)[:disk][0]
28
+ end
29
+
30
+ # Number of write requests merged into the device per second.
31
+ def self.write_request_queue_merges(disk_id = 'sda')
32
+ IoStatReader.read_iostats(disk_id)[:disk][1]
33
+ end
34
+
35
+ # Number of read requests after merge done on the device per second.
36
+ def self.reads_per_second(disk_id = 'sda')
37
+ IoStatReader.read_iostats(disk_id)[:disk][2]
38
+ end
39
+
40
+ # Number of write requests after merge done on the device per second.
41
+ def self.writes_per_second(disk_id = 'sda')
42
+ IoStatReader.read_iostats(disk_id)[:disk][3]
43
+ end
44
+
45
+ # Number of sectors read on the device per second.
46
+ def self.read_sectors_per_second(disk_id = 'sda')
47
+ IoStatReader.read_iostats(disk_id)[:disk][4]
48
+ end
49
+
50
+ # Number of secotrs written on the device per second
51
+ def self.write_sectors_per_second(disk_id = 'sda')
52
+ IoStatReader.read_iostats(disk_id)[:disk][5]
53
+ end
54
+
55
+ # Average size of the disk requests queue size
56
+ def self.average_request_queue_size(disk_id = 'sda')
57
+ IoStatReader.read_iostats(disk_id)[:disk][6]
58
+ end
59
+
60
+ # Average length of the disk request queue
61
+ def self.average_queue_lenght(disk_id = 'sda')
62
+ IoStatReader.read_iostats(disk_id)[:disk][7]
63
+ end
64
+
65
+ # Average time io requests wait to be served in milli seconds
66
+ def self.average_io_wait_in_millis(disk_id = 'sda')
67
+ IoStatReader.read_iostats(disk_id)[:disk][8]
68
+ end
69
+
70
+ # Average time read requests wait to be served in milli seconds
71
+ def self.read_request_wait_in_millis(disk_id = 'sda')
72
+ IoStatReader.read_iostats(disk_id)[:disk][9]
73
+ end
74
+
75
+ # Average time write requests wait to be served in milli seconds
76
+ def self.write_request_wait_in_millis(disk_id = 'sda')
77
+ IoStatReader.read_iostats(disk_id)[:disk][10]
78
+ end
79
+
80
+ # % of CPU used during the time IO requets were being served to the device.
81
+ # used to detect device saturation
82
+ def self.bandwidth_use_in_cpu_time_percentage(disk_id = 'sda')
83
+ IoStatReader.read_iostats(disk_id)[:disk][12]
84
+ end
85
+ end
86
+ end
@@ -4,11 +4,11 @@ module SystemStats
4
4
  class IoStatReader
5
5
 
6
6
  IOSTAT_CMD_OSX = 'iostat -dC disk'
7
- IOSTAT_CMD_LINUX = 'iostat -x'
7
+ IOSTAT_CMD_LINUX = 'iostat -x '
8
8
 
9
9
  private
10
10
  # Gets system statistics from iostats and parses the output
11
- def read_iostats(disk)
11
+ def self.read_iostats(disk)
12
12
  if OS::linux?
13
13
  process_iostat_linux(disk)
14
14
  elsif OS::mac?
@@ -19,9 +19,11 @@ module SystemStats
19
19
  end
20
20
 
21
21
  # Parse disk/cpu counters from iostat on osx.
22
- def process_iostat_mac(disk_id = 0)
22
+ def self.process_iostat_mac(disk_id = 0)
23
23
  output = IO.popen(IOSTAT_CMD_OSX + disk_id.to_s)
24
24
  data = output.readlines
25
+ output.close
26
+ puts data
25
27
  values = Hash.new
26
28
  begin
27
29
  values[:cpu] = data[2].split[3,3]
@@ -33,55 +35,143 @@ module SystemStats
33
35
  end
34
36
 
35
37
  # Parse disk/cpu counters from iostat on linux.
36
- def process_iostat_linux(disk_id = 'sda1')
38
+ def self.process_iostat_linux(disk_id = 'sda1')
37
39
  output = IO.popen(IOSTAT_CMD_LINUX + disk_id.to_s)
38
40
  data = output.readlines
39
41
  values = Hash.new
40
42
  begin
41
43
  values[:cpu] = [data[3].split[0] , data[3].split[2], data[3].split[5]]
42
- values[:disk] = data[2].split[0,3]
44
+ values[:disk] = data[6].split[0,13]
43
45
  rescue => parse_error
44
46
  raise 'Error parsing IoStats output.'
45
47
  end
46
48
  values
47
49
  end
48
50
 
51
+ def self.raise_if_not_linux
52
+ unless OS::linux?
53
+ raise "unsupported OS. Not Linux"
54
+ end
55
+ end
56
+
57
+ # Raises an error when not running under linux
58
+ def self.raise_if_not_mac
59
+ unless OS::mac?
60
+ raise "unsupported OS. Not OSX"
61
+ end
62
+ end
49
63
  public
50
64
 
51
65
  # Returns the User Cpu average percentage
52
- def cpu_user_average
66
+ def self.cpu_user_average
53
67
  read_iostats(0)[:cpu][0]
54
68
  end
55
69
 
56
70
  # Returns the system Cpu average use percentage
57
- def cpu_system_average
71
+ def self.cpu_system_average
58
72
  read_iostats(0)[:cpu][1]
59
73
  end
60
74
 
61
75
  # Returns the user Cpu average idle time percentage
62
- def cpu_idle_average
76
+ def self.cpu_idle_average
63
77
  read_iostats(0)[:cpu][2]
64
78
  end
65
79
 
66
80
  # Returns the user's Kilobytes per transfer
67
81
  # Disk id is the numeric ID in osx, disk type in linux
68
82
  # OSX: disk0 => '0', Linux => disk 0 => 'sda'
69
- def disk_kb_per_transfer(disk_id)
83
+ def self.disk_kb_per_transfer(disk_id)
84
+ raise_if_not_mac
70
85
  read_iostats(disk_id)[:disk][0]
71
86
  end
72
87
 
73
88
  # Returns the number of current transfers per second for a disk
74
89
  # Disk id is the numeric ID in osx, disk type in linux
75
90
  # OSX: disk0 => '0', Linux => disk 0 => 'sda'
76
- def disk_transfers_per_second(disk_id)
91
+ def self.disk_transfers_per_second(disk_id)
92
+ raise_if_not_mac
77
93
  read_iostats(disk_id)[:disk][1]
78
94
  end
79
95
 
80
96
  # Returns the current number of megabytes transfered on a disk per second
81
97
  # Disk id is the numeric ID in osx, disk type in linux
82
98
  # OSX: disk0 => '0', Linux => disk 0 => 'sda'
83
- def disk_megabytes_per_second(disk_id)
99
+ def self.disk_megabytes_per_second(disk_id)
100
+ raise_if_not_mac
84
101
  read_iostats(disk_id)[:disk][2]
85
102
  end
103
+
104
+ # Number of read requests merged into the device per second.
105
+ def self.disk_read_request_queue_merges(disk_id)
106
+ raise_if_not_linux
107
+ read_iostats(disk_id)[:disk][0]
108
+ end
109
+
110
+ # Number of write requests merged into the device per second.
111
+ def self.disk_write_request_queue_merges(disk_id)
112
+ raise_if_not_linux
113
+ read_iostats(disk_id)[:disk][1]
114
+ end
115
+
116
+ # Number of read requests after merge done on the device per second.
117
+ def self.disk_reads_per_second(disk_id)
118
+ raise_if_not_linux
119
+ read_iostats(disk_id)[:disk][2]
120
+ end
121
+
122
+ # Number of write requests after merge done on the device per second.
123
+ def self.disk_writes_per_second(disk_id)
124
+ raise_if_not_linux
125
+ read_iostats(disk_id)[:disk][3]
126
+ end
127
+
128
+ # Number of sectors read on the device per second.
129
+ def self.disk_read_sectors_per_second(disk_id)
130
+ raise_if_not_linux
131
+ read_iostats(disk_id)[:disk][4]
132
+ end
133
+
134
+ # Number of secotrs written on the device per second
135
+ def self.disk_write_sectors_per_second(disk_id)
136
+ raise_if_not_linux
137
+ read_iostats(disk_id)[:disk][5]
138
+ end
139
+
140
+ # Average size of the disk requests queue size
141
+ def self.disk_average_request_queue_size(disk_id)
142
+ raise_if_not_linux
143
+ read_iostats(disk_id)[:disk][6]
144
+ end
145
+
146
+ # Average length of the disk request queue
147
+ def self.disk_average_queue_lenght(disk_id)
148
+ raise_if_not_linux
149
+ read_iostats(disk_id)[:disk][7]
150
+ end
151
+
152
+ # Average time io requests wait to be served in milli seconds
153
+ def self.disk_average_io_wait_in_millis(disk_id)
154
+ raise_if_not_linux
155
+ read_iostats(disk_id)[:disk][8]
156
+ end
157
+
158
+ # Average time read requests wait to be served in milli seconds
159
+ def self.disk_read_request_wait_in_millis(disk_id)
160
+ raise_if_not_linux
161
+ read_iostats(disk_id)[:disk][9]
162
+ end
163
+
164
+ # Average time write requests wait to be served in milli seconds
165
+ def self.disk_write_request_wait_in_millis(disk_id)
166
+ raise_if_not_linux
167
+ read_iostats(disk_id)[:disk][10]
168
+ end
169
+
170
+ # % of CPU used during the time IO requets were being served to the device.
171
+ # used to detect device saturation
172
+ def self.disk_bandwidth_use_in_cpu_time_percentage(disk_id)
173
+ raise_if_not_linux
174
+ read_iostats(disk_id)[:disk][12]
175
+ end
86
176
  end
87
177
  end
@@ -1,4 +1,11 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module SystemStats
3
- VERSION = "0.1.#{ENV['BUILD_NUMBER'] || 'dev'}"
4
- end
3
+
4
+ MAJOR = "0.3"
5
+
6
+ if ENV['BUILD_NUMBER']
7
+ VERSION = "#{MAJOR}.#{ENV['BUILD_NUMBER']}"
8
+ else
9
+ VERSION = "#{MAJOR}"
10
+ end
11
+ end
@@ -25,38 +25,42 @@ describe SystemStats::IoStatReader do
25
25
  end
26
26
 
27
27
  it "creates a new instance" do
28
- stats.stub(:readlines).and_return(mock_iostat_output_linux)
28
+ SystemStats::IoStatReader.any_instance.stub(:readlines).and_return(mock_iostat_output_linux)
29
29
  end
30
30
 
31
31
  it "should return the average cpu_user_average for the current cpu" do
32
- stats.cpu_user_average.should == '0.01'
32
+ SystemStats::CPU.user_average.should == '0.01'
33
33
  end
34
34
 
35
35
  it "should return the average cpu_system_average for the current cpu" do
36
- stats.cpu_system_average.should == '0.32'
36
+ SystemStats::CPU.system_average.should == '0.32'
37
37
  end
38
38
 
39
39
  it "should return the average cpu_user_average for the current cpu" do
40
- stats.cpu_idle_average.should == '98.82'
40
+ SystemStats::CPU.idle_average.should == '98.82'
41
41
  end
42
42
 
43
43
  it "should return the megabytes per second for disk 0" do
44
- stats.disk_megabytes_per_second(0).should == '0.44'
44
+ SystemStats::Disk.writes_per_second(sda1).should == '0.44'
45
45
  end
46
46
 
47
- it "should fail on a non existent disk" do
48
- stats.disk_megabytes_per_second(100).should_not == '0.27'
49
- end
47
+ # it "should return the megabytes per second for disk 0" do
48
+ # SystemStats::Disk.megabytes_per_second(0).should == '0.44'
49
+ # end
50
50
 
51
- it "should fail on a random string as disk" do
52
- stats.disk_megabytes_per_second('randomdisk').should raise_error
53
- end
51
+ # it "should fail on a non existent disk" do
52
+ # SystemStats::Disk.megabytes_per_second(100).should_not == '0.27'
53
+ # end
54
54
 
55
- it "should return the transfer per second for disk 0" do
56
- stats.disk_transfers_per_second(0) == '12'
57
- end
55
+ # it "should fail on a random string as disk" do
56
+ # SystemStats::Disk.megabytes_per_second('randomdisk').should raise_error
57
+ # end
58
58
 
59
- it "should return the transfer per second for disk 0" do
60
- stats.disk_kb_per_transfer(0) == '23.41'
61
- end
59
+ # it "should return the transfer per second for disk 0" do
60
+ # SystemStats::Disk.transfers_per_second(0) == '12'
61
+ # end
62
+
63
+ # it "should return the transfer per second for disk 0" do
64
+ # SystemStats::Disk.kb_per_transfer(0) == '23.41'
65
+ # end
62
66
  end
@@ -39,19 +39,19 @@ describe SystemStats::IoStatReader do
39
39
  end
40
40
 
41
41
  it "should return the megabytes per second for disk 0" do
42
- stats.disk_megabytes_per_second(0).should == '0.27'
42
+ stats.disk_megabytes_per_second_mac_only(0).should == '0.27'
43
43
  end
44
44
 
45
45
  it "should fail on a random string as disk" do
46
- stats.disk_megabytes_per_second('randomdisk').should raise_error
46
+ stats.disk_megabytes_per_second_mac_only('randomdisk').should raise_error
47
47
  end
48
48
 
49
49
  it "should return the transfer per second for disk 0" do
50
- stats.disk_transfers_per_second(0) == '12'
50
+ stats.disk_transfers_per_second_mac_only(0) == '12'
51
51
  end
52
52
 
53
53
  it "should return the transfer per second for disk 0" do
54
- stats.disk_kb_per_transfer(0) == '23.41'
54
+ stats.disk_kb_per_transfer_mac_only(0) == '23.41'
55
55
  end
56
56
  end
57
57
  end
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
  gem.add_dependency "json"
21
21
  gem.add_dependency "git"
22
22
  gem.add_dependency "activesupport"
23
+ gem.add_dependency "thor"
23
24
 
24
25
  gem.add_development_dependency "bundler", "~> 1.3"
25
26
  gem.add_development_dependency "rake"
metadata CHANGED
@@ -1,137 +1,163 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: systemstats
3
- version: !ruby/object:Gem::Version
4
- hash: -2034994314
5
- prerelease: 4
6
- segments:
7
- - 0
8
- - 1
9
- - dev
10
- version: 0.1.dev
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.3'
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Ivan Marcin
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-05-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-07-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: json
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: git
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: git
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
49
47
  name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
50
55
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: thor
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
60
70
  type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: bundler
64
71
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: bundler
80
+ requirement: !ruby/object:Gem::Requirement
66
81
  none: false
67
- requirements:
82
+ requirements:
68
83
  - - ~>
69
- - !ruby/object:Gem::Version
70
- hash: 9
71
- segments:
72
- - 1
73
- - 3
74
- version: "1.3"
84
+ - !ruby/object:Gem::Version
85
+ version: '1.3'
75
86
  type: :development
76
- version_requirements: *id004
77
- - !ruby/object:Gem::Dependency
78
- name: rake
79
87
  prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.3'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rake
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
89
102
  type: :development
90
- version_requirements: *id005
91
- - !ruby/object:Gem::Dependency
92
- name: rspec
93
103
  prerelease: false
94
- requirement: &id006 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
103
118
  type: :development
104
- version_requirements: *id006
105
- - !ruby/object:Gem::Dependency
106
- name: ruby-debug
107
119
  prerelease: false
108
- requirement: &id007 !ruby/object:Gem::Requirement
109
- none: false
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- hash: 3
114
- segments:
115
- - 0
116
- version: "0"
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: ruby-debug
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
117
134
  type: :development
118
- version_requirements: *id007
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
119
142
  description: Retrieves machine stats, including cpu,memory,disk,io
120
- email:
143
+ email:
121
144
  - ivan.marcin@lookout.com
122
- executables: []
123
-
145
+ executables:
146
+ - SystemStatsCollector
124
147
  extensions: []
125
-
126
148
  extra_rdoc_files: []
127
-
128
- files:
129
- - .gitignore
149
+ files:
150
+ - .DS_Store
130
151
  - Gemfile
152
+ - Gemfile.lock
131
153
  - LICENSE.txt
132
154
  - README.md
133
155
  - Rakefile
156
+ - bin/SystemStatsCollector
134
157
  - lib/systemstats.rb
158
+ - lib/systemstats/capacity_collector.rb
159
+ - lib/systemstats/cpu.rb
160
+ - lib/systemstats/disk.rb
135
161
  - lib/systemstats/iostat_reader.rb
136
162
  - lib/systemstats/os_detect.rb
137
163
  - lib/systemstats/version.rb
@@ -141,40 +167,30 @@ files:
141
167
  - systemstats.gemspec
142
168
  homepage: https://source.flexilis.local/gems/systemstats
143
169
  licenses: []
144
-
145
170
  post_install_message:
146
171
  rdoc_options: []
147
-
148
- require_paths:
172
+ require_paths:
149
173
  - lib
150
- required_ruby_version: !ruby/object:Gem::Requirement
174
+ required_ruby_version: !ruby/object:Gem::Requirement
151
175
  none: false
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- hash: 3
156
- segments:
157
- - 0
158
- version: "0"
159
- required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
181
  none: false
161
- requirements:
162
- - - ">"
163
- - !ruby/object:Gem::Version
164
- hash: 25
165
- segments:
166
- - 1
167
- - 3
168
- - 1
169
- version: 1.3.1
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
170
186
  requirements: []
171
-
172
187
  rubyforge_project:
173
- rubygems_version: 1.8.24
188
+ rubygems_version: 1.8.25
174
189
  signing_key:
175
190
  specification_version: 3
176
191
  summary: Library to access a machine's performance stats
177
- test_files:
192
+ test_files:
178
193
  - spec/spec_helper.rb
179
194
  - spec/unit/iostat_linux_spec.rb
180
195
  - spec/unit/iostat_osx_spec.rb
196
+ has_rdoc:
data/.gitignore DELETED
@@ -1,19 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .ds_store
6
- coverage
7
- InstalledFiles
8
- lib/bundler/man
9
- pkg
10
- rdoc
11
- spec/reports
12
- test/tmp
13
- test/version_tmp
14
- tmp
15
-
16
- # YARD artifacts
17
- .yardoc
18
- _yardoc
19
- doc/