Sha256: 6423b2823d215c42e64ce4474480d2cb915fc4ac636d63782f86e0871104aee9

Contents?: true

Size: 980 Bytes

Versions: 1

Compression:

Stored size: 980 Bytes

Contents

module Graphiterb
  module Monitors

    # A monitor for how much space is available on a node.
    class DiskSpace < Graphiterb::Monitors::PeriodicMonitor

      # Runs and parses `df'.
      #
      #   disk_space.df
      #   #=> [["/dev/sda", "39373712", "20488716", "16884908", "55%", "/"], ["/dev/sdb", "920090332", "397413344", "475939088", "46%", "/home"]]
      #
      # @return [Array<Array>]
      def df
        `/bin/df`.chomp.split("\n").
          grep(%r{^/dev/}).
          map{|line| line.split(/\s+/) } rescue []
      end

      # Calls +df+ and adds the space available metric.
      def get_metrics metrics, since
        #         "/dev/sdb1", "39373712", "20488716", "16884908", "55%", "/"
        df.each do |handle, size, spaceused, spacefree, percentfree, location|
          disk_name = handle.gsub(/^\//, '').split('/')
          metrics << [scope(graphite_identifier, disk_name, 'available'), spacefree.to_i]
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
graphiterb-0.2.13 lib/graphiterb/monitors/disk_space.rb