Sha256: 518cd74a5c68edfdbdb71bb5470f86fad706f03c18dddbc2b2619246620bce7a

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

#!/usr/bin/env ruby

require 'json'
require 'rubygems'
require 'sys/filesystem'

config = JSON::parse(ARGV[0])

$stdout.sync = true

def GB b; (b.to_f / 1024**3).round(6); end # GB significant down to 4kB

while(true) do
  info =
    Sys::Filesystem.mounts.
    # map {|m| $stderr.puts m.name; m}.
    find_all{|m| not(m.name =~ /^(devpts|udev|sysfs|tmpfs|none|proc)$/)}.
    map {|m|
      s = Sys::Filesystem.stat(m.mount_point)
      # $stderr.puts "#{m.name} - #{s.inspect}"
      [m.name, {
        # block_size: s.block_size,
        # blocks: s.blocks,
        # blocks_available: s.blocks_available,
        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),
        files_used: s.files - s.files_available,
        files_free: s.files_available,
        # files_priv: s.files_free - s.files_available, # XXX any use?
      }]
    }
  puts JSON::generate(Hash[*info.flatten])

  break unless config.include?('interval')
  sleep config['interval']
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
panoptimon-0.3.0 collectors/disk/disk
panoptimon-0.2.0 collectors/disk/disk
panoptimon-0.1.0 collectors/disk/disk
panoptimon-0.0.2 collectors/disk/disk