Module: ZabbixRubyClient::Plugins::Memory

Extended by:
Memory
Included in:
Memory
Defined in:
lib/zabbix-ruby-client/plugins/memory.rb

Instance Method Summary collapse

Instance Method Details

#collect(*args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/zabbix-ruby-client/plugins/memory.rb', line 6

def collect(*args)
  host = args[0]
  meminfo = `cat /proc/meminfo`
  if $?.to_i == 0
    info = splitinfo(meminfo)
  else
    logger.warn "Please install sysstat."
    return []
  end

  mem_total = info["MemTotal"] * 1024
  mem_free = (info['MemFree'] + info['Buffers'] + info['Cached']) * 1024
  mem_used = mem_total - mem_free
  mem_percent = (mem_used / mem_total.to_f * 100).to_i
  swap_total = info['SwapTotal'] * 1024
  swap_free = info['SwapFree'] * 1024
  swap_used = swap_total - swap_free
  swap_percent = 0
  unless swap_total == 0
    swap_percent = (swap_used / swap_total.to_f * 100).to_i
  end

  time = Time.now.to_i
  back = []
  back << "#{host} memory[total] #{time} #{mem_total}"
  back << "#{host} memory[used] #{time} #{mem_used}"
  back << "#{host} memory[free] #{time} #{mem_free}"
  back << "#{host} memory[percent_used] #{time} #{mem_percent}"
  back << "#{host} memory[swap_total] #{time} #{swap_total}"
  back << "#{host} memory[swap_used] #{time} #{swap_used}"
  back << "#{host} memory[swap_free] #{time} #{swap_free}"
  back << "#{host} memory[swap_percent_used] #{time} #{swap_percent}"
  return back
end

#splitinfo(info) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/zabbix-ruby-client/plugins/memory.rb', line 41

def splitinfo(info)
  info.split(/\n/).map(&:strip).reduce({}) do |a,line|
    _, key, value = *line.match(/^(\w+):\s+(\d+)\s/)
    a[key] = value.to_i
    a
  end
end