Sha256: a3041dd0348eba71f17bf83bf0bc9449dc0851ca2ad8a3437db8436a8b707c6e
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
#!/usr/bin/env ruby require 'json' require 'rubygems' require 'ostruct' config = JSON::parse(ARGV[0]) $stdout.sync = true def GB b; (b.to_f / 1024**3).round(6); end # GB significant down to 4kB def get_mounts mount_hash = {} mounts = File.open("/etc/mtab", "r").read.split("\n").map{|l| l.split(/\s+/)} mounts.each{|m| mount_hash[m[1]] = m[0] unless %w[devpts udev sysfs tmpfs none proc].include?(m[0])} mount_hash end def stat_fs (mounts) s = %x[stat --printf="%n %s %b %f %a %c %d\n" -f #{mounts.keys.join(' ')}].split("\n") s.map!{|l| l.split} s.map{|l| OpenStruct.new( name: mounts[l[0]], block_size: l[1].to_i, blocks: l[2].to_i, blocks_free: l[3].to_i, blocks_available: l[4].to_i, #blocks available to non-superuser files: l[5].to_i, files_available: l[6].to_i ).freeze } end while(true) do mounts = get_mounts stats = stat_fs(mounts).select{|m| m.blocks > 0} info = stats.map{ |s| [s.name, { space_used: GB((s.blocks - s.blocks_free) * s.block_size), space_free: GB(s.blocks_available * s.block_size), space_priv: GB((s.blocks_free - s.blocks_available) * s.block_size), space_used_percentage: ((s.blocks - s.blocks_free) * 100.0 / (s.blocks - s.blocks_free + s.blocks_available)).round(2), files_used: s.files - s.files_available, files_free: s.files_available, }] } puts JSON::generate(Hash[*info.flatten]) break unless config.include?('interval') sleep config['interval'] end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
panoptimon-0.4.5 | collectors/disk/disk |