Sha256: 36ba9d82350c684c4813ac66658b65c4921f1dfcab6e5d5a55d599b3e1173065
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
#encoding: utf-8 class Riemann::Babbler::Disk < Riemann::Babbler require 'sys/filesystem' include Sys NOT_MONITORING_FS = [ 'sysfs', 'nfs', 'devpts', 'squashfs', 'proc', 'devtmpfs' ] def collect # собираем только необходимые для мониторинга маунт-поинты # точнее выбираем из 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 = Array.new monit_points.each do |point| point_stat = Filesystem.stat point desc_point = point human_point = point == "/" ? "/root" : point human_point.gsub!(/^\//, "").gsub!(/\//, "_") disk << { :service => plugin.service + " #{human_point} % block", :description => "Disk usage #{desc_point}, %", :metric => (1- point_stat.blocks_available.to_f/point_stat.blocks).round(2) * 100 } disk << { :service => plugin.service + " #{human_point} % inode", :description => "Disk usage #{desc_point}, inodes %", :metric => (1 - point_stat.files_available.to_f/point_stat.files).round(2) * 100 } disk << { :service => plugin.service + " #{human_point} abs free", :description => "Disk free #{desc_point}, B", :metric => point_stat.blocks_free * point_stat.block_size, :state => 'ok'} disk << { :service => plugin.service + " #{human_point} abs total", :description => "Disk space #{desc_point}, B", :metric => point_stat.blocks * point_stat.block_size, :state => 'ok'} end disk end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
riemann-babbler-0.8.7 | lib/riemann/babbler/plugins/disk.rb |