Module: SysViewer::Linux
- Defined in:
- lib/sys_viewer/linux.rb
Instance Method Summary collapse
- #cpu_utilization ⇒ Object
- #disk_usage ⇒ Object
- #load_average ⇒ Object
- #memory_info ⇒ Object
- #network_traffic ⇒ Object
- #uptime ⇒ Object
Instance Method Details
#cpu_utilization ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/sys_viewer/linux.rb', line 75 def cpu_utilization stdin, stdout, stderr = Open3.popen3('sar', '1', '1') average_stats = stdout.readlines.last values = average_stats.scan(/\d+[\.,]\d+/) { user: values[0].to_f , system: values[2].to_f , idle: values[5].to_f } end |
#disk_usage ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/sys_viewer/linux.rb', line 25 def disk_usage stdin, stdout, stderr = Open3.popen3('df', '-h') volumes = stdout.readlines volumes.shift # remove header data = {} volumes.each do |volume| columns = { total: '', used: '', free: '', percent: '', path: '' } line = volume.split(/[ ]{1,}/, 6) columns[:total] = line[1] columns[:used] = line[2] columns[:free] = line[3] columns[:percent] = line[4] columns[:path] = line[5].gsub(/[\n]+/,'') data[line[0]] = columns end data end |
#load_average ⇒ Object
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/sys_viewer/linux.rb', line 63 def load_average loadavg = { minute: 0, five_minutes: 0, fifteen_minutes: 0, cores: 0 } loadavg[:minute], loadavg[:five_minutes], loadavg[:fifteen_minutes] = File.open('/proc/loadavg', &:readline).scan(/\d+.\d+/).map { |value| value.to_f } stdin, stdout, stderr = Open3.popen3('cat /proc/cpuinfo | grep cores') cores = stdout.gets loadavg[:cores] = (cores)? cores.scan(/\d+/).first.to_i : 1 loadavg end |
#memory_info ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/sys_viewer/linux.rb', line 4 def memory_info memory = { memtotal: 0, memused: 0, memfree: 0, swaptotal: 0, swapused: 0, swapfree: 0 } mem_hash = {} File.open('/proc/meminfo', 'r') do |file| file.readlines.each do |line| rule = line.split(/:[ ]{2,}/) mem_hash[rule[0]] = rule[1].to_f / 1024 end end memory[:memtotal] = mem_hash['MemTotal'] memory[:memused] = mem_hash['MemTotal'] - mem_hash['MemFree'] memory[:memfree] = mem_hash['MemFree'] memory[:swaptotal] = mem_hash['SwapTotal'] memory[:swapused] = mem_hash['SwapTotal'] - mem_hash['SwapFree'] memory[:swapfree] = mem_hash['SwapFree'] memory end |
#network_traffic ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/sys_viewer/linux.rb', line 83 def network_traffic stdin, stdout, stderr = Open3.popen3('sar', '-n', 'DEV', '1', '1') data = stdout.readlines 7.times { data.shift } # remove first 7 lines network_data = {} data.each do |line| values = line.split # rxkB/s - Total number of kilobytes received per second # txkB/s - Total number of kilobytes transmitted per second network_data[values[1]] = { received: values[4].to_f, transmitted: values[5].to_f } end network_data end |
#uptime ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/sys_viewer/linux.rb', line 48 def uptime uptime = File.open('/proc/uptime', &:readline).split[0].to_f minute = 60 hour = minute * 60 day = hour * 24 days = (uptime / day).to_i hours = ((uptime % day) / hour).to_i minutes = ((uptime % hour) / minute).to_i seconds = (uptime % minute).to_i { days: days, hours: hours, minutes: minutes, seconds: seconds } end |