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
40
41
42
43
44
45
46
47
48
|
# File 'lib/zabbix-ruby-client/plugins/disk.rb', line 10
def collect(*args)
host = args[0]
dev = args[1]
mapped = args[3] || dev
diskspace = `df | grep "#{mapped}"`
if $?.to_i == 0
_, size, used, available, percent_used, mount = diskspace.split(/\s+/)
else
logger.error "df is not working... ouchie."
return []
end
time = Time.now.to_i
back = []
back << "#{host} disk.space[#{mapped},size] #{time} #{size.to_i * 1000}"
back << "#{host} disk.space[#{mapped},used] #{time} #{used.to_i * 1000}"
back << "#{host} disk.space[#{mapped},available] #{time} #{available.to_i * 1000}"
back << "#{host} disk.space[#{mapped},percent_used] #{time} #{percent_used.gsub(/%/,'')}"
if dev != ""
diskinfo = `cat /proc/diskstats | grep " #{dev} "`
if $?.to_i == 0
_, _, _, _, read_ok, read_merged, read_sector, read_time, write_ok, write_merged, write_sector, write_time, io_current, io_time, io_weighted = diskinfo.split(/\s+/)
else
logger.warn "Oh there is no such device."
return []
end
back << "#{host} disk.io[#{mapped},read_ok] #{time} #{read_ok}"
back << "#{host} disk.io[#{mapped},read_merged] #{time} #{read_merged}"
back << "#{host} disk.io[#{mapped},read_sector] #{time} #{read_sector}"
back << "#{host} disk.io[#{mapped},read_time] #{time} #{read_time}"
back << "#{host} disk.io[#{mapped},write_ok] #{time} #{write_ok}"
back << "#{host} disk.io[#{mapped},write_merged] #{time} #{write_merged}"
back << "#{host} disk.io[#{mapped},write_sector] #{time} #{write_sector}"
back << "#{host} disk.io[#{mapped},write_time] #{time} #{write_time}"
back << "#{host} disk.io[#{mapped},io_time] #{time} #{io_time}"
back << "#{host} disk.io[#{mapped},io_weighted] #{time} #{io_weighted}"
end
return back
end
|