lib/riemann/babbler/plugins/memory.rb in riemann-babbler-1.1.0pre2 vs lib/riemann/babbler/plugins/memory.rb in riemann-babbler-1.1.6
- old
+ new
@@ -1,20 +1,34 @@
#encoding: utf-8
class Riemann::Babbler::Memory < Riemann::Babbler
def collect
- total = SysInfo::Memory.total
- free_bc = SysInfo::Memory.free + SysInfo::Memory.buffers + SysInfo::Memory.cached
+ m = File.read('/proc/meminfo').split(/\n/).inject({}) { |info, line|
+ x = line.split(/:?\s+/)
+ info[x[0]] = x[1].to_i
+ info
+ }
+ free = m['MemFree'].to_i * 1024
+ cached =m['Cached'].to_i * 1024
+ buffers =m['Buffers'].to_i * 1024
+ total = m['MemTotal'].to_i * 1024
+ used = total - free
+ free_bc = free + buffers + cached
+
fraction = 1 - (free_bc.to_f / total)
+ swap_fraction = m['SwapTotal'] == 0 ? 0 : 1 - m['SwapFree'].to_f/m['SwapTotal']
+
+ desc = "#{shell('ps -eo pmem,pid,cmd --sort -pmem | head -3').chomp}"
[
{ :service => plugin.service + ' % free', :description => 'Memory usage, %', :metric => fraction.round(2) * 100 },
- { :service => plugin.service + ' abs free', :description => "Memory free (Bytes)", :metric => SysInfo::Memory.free, :state => 'ok' },
- { :service => plugin.service + ' abs total', :description => "Memory total (Bytes)", :metric => total, :state => 'ok' },
- { :service => plugin.service + ' abs cached', :description => "Memory usage, cached (Bytes)", :metric => SysInfo::Memory.cached, :state => 'ok' },
- { :service => plugin.service + ' abs buffers', :description => "Memory usage, buffers (Bytes)", :metric => SysInfo::Memory.buffers, :state => 'ok' },
- { :service => plugin.service + ' abs used', :description => "Memory usage, used (Bytes)", :metric => SysInfo::Memory.total - SysInfo::Memory.free , :state => 'ok' },
- { :service => plugin.service + ' abs free_bc', :description => "Memory usage with cache и buffers (Bytes)", :metric => free_bc , :state => 'ok' }
+ { :service => plugin.service + ' % swap', :description => 'Swap usage, %', :metric => swap_fraction.round(2) * 100 },
+ { :service => plugin.service + ' abs free', :description => "Memory free (kB)\n\n #{desc}", :metric => free, :state => 'ok' },
+ { :service => plugin.service + ' abs total', :description => "Memory total (kB)\n\n #{desc}", :metric => total, :state => 'ok' },
+ { :service => plugin.service + ' abs cached', :description => "Memory usage, cached (kB)\n\n #{desc}", :metric => cached, :state => 'ok' },
+ { :service => plugin.service + ' abs buffers', :description => "Memory usage, buffers (kB)\n\n #{desc}", :metric => buffers, :state => 'ok' },
+ { :service => plugin.service + ' abs used', :description => "Memory usage, used (kB)\n\n #{desc}", :metric => used , :state => 'ok' },
+ { :service => plugin.service + ' abs free_bc', :description => "Memory usage with cache и buffers (kB)\n\n #{desc}", :metric => free_bc , :state => 'ok' }
]
end
end