systemstats 0.1.dev → 0.3

Sign up to get free protection for your applications and to get access to all the features.
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/