Sha256: 7b7e6a49e884374412d4c82747e2ff3f6cd33ad307d4b45e44bc1f268d8ab44c

Contents?: true

Size: 1.05 KB

Versions: 14

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

14 entries across 14 versions & 1 rubygems

Version Path
kurchatov-0.0.5.pre5 examples/mdadm.rb
kurchatov-0.0.5.pre4 examples/mdadm.rb
kurchatov-0.0.5.pre2 examples/mdadm.rb
kurchatov-0.0.5.pre1 examples/mdadm.rb
kurchatov-0.0.4 examples/mdadm.rb
kurchatov-0.0.4d examples/mdadm.rb
kurchatov-0.0.4c examples/mdadm.rb
kurchatov-0.0.4b examples/mdadm.rb
kurchatov-0.0.3 examples/mdadm.rb
kurchatov-0.0.3b examples/mdadm.rb
kurchatov-0.0.3a examples/mdadm.rb
kurchatov-0.0.2 examples/mdadm.rb
kurchatov-0.0.2b examples/mdadm.rb
kurchatov-0.0.1 examples/mdadm.rb