Sha256: 3e196a47b1b05cdf9a40f880092bcb9a78dfedd1fe71e01259bfe66ff540194a
Contents?: true
Size: 1.05 KB
Versions: 51
Compression:
Stored size: 1.05 KB
Contents
interval 60 run_if do File.exists? '/proc/mdstat' end collect do def rm_bracket(text) text.gsub('[', '').gsub(']', '') end def status_well?(text) text.gsub(/U/, '').empty? end def get_failed_parts (device) begin failed_parts = [] Dir["/sys/block/#{device}/md/dev-*"].each do |p| state = File.read("#{p}/state").strip next unless state != 'in_sync' p.gsub!(/.+\/dev-/, '') failed_parts << "#{p} (#{state})" end failed_parts.join(', ') rescue nil end end mdstat = File.read('/proc/mdstat').split("\n") mdstat.each_with_index do |line, index| next unless line.include?('blocks') device = file[index-1].split(':')[0].strip mdstatus = rm_bracket(line.split(' ').last) # UUU next if status_well?(mdstatus) # пропускаем все збс next if mdstatus == plugin[states][device].to_s # disabled in config event(:service => "mdadm #{device}", :state => 'critical', :desc => "mdadm failed device #{device}: #{get_failed_parts(device)}") end end
Version data entries
51 entries across 51 versions & 1 rubygems