Sha256: c047b1c8057d135b93ba2f622bdbaecc6895e18f13e8a18ed19d0ca289a74e83

Contents?: true

Size: 1.34 KB

Versions: 16

Compression:

Stored size: 1.34 KB

Contents

class Riemann::Babbler::Disk
  include Riemann::Babbler

  require 'sys/filesystem'
  include Sys

  NOT_MONITORING_FS = [
    'sysfs',
    'nfs',
    'devpts',
    'squashfs',
    'proc',
    'devtmpfs'
  ]

  def plugin
    options.plugins.disk
  end

  def disk
    # собираем только необходимые для мониторинга маунт-поинты
    # точнее выбираем из mounts только те, у которых fstype не попадает
    # в NOT_MONITORING_FS
    monit_points = [] 
    File.read('/proc/mounts').split("\n").each do |line|
      mtab = line.split(/\s+/)
      monit_points << mtab[1] unless NOT_MONITORING_FS.include? mtab[2] 
    end
    disk = Hash.new
    monit_points.each do |point|
      point_stat = Filesystem.stat point
      human_point = point == "/" ? "/root" : point
      human_point.gsub!(/^\//, "")
      human_point.gsub!(/\//, "_")
      disk.merge!({human_point + " block" => 1 - point_stat.blocks_available.to_f/point_stat.blocks})
      disk.merge!({human_point + " inode" => 1 - point_stat.files_available.to_f/point_stat.files})
    end
    disk
  end

  def tick
    disk.each do |point, free|
      report({
        :service => plugin.service + " #{point}",
        :state => state(free),
        :metric => free
      })
    end
  end

end

Riemann::Babbler::Disk.run

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
riemann-babbler-0.3.1 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.3.0 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.8 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.7 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.6 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.5 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.4 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.3 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.2 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.1 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.2.0 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.1.9 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.1.8 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.1.7 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.1.6 lib/riemann/babbler/plugins/disk.rb
riemann-babbler-0.1.5 lib/riemann/babbler/plugins/disk.rb