class Riemann::Tools::Md

Public Instance Methods

mdstat_parser() click to toggle source
# File lib/riemann/tools/md.rb, line 14
def mdstat_parser
  @mdstat_parser ||= MdstatParser.new
end
report_device?(device) click to toggle source
# File lib/riemann/tools/md.rb, line 45
def report_device?(device)
  if !opts[:devices].empty?
    opts[:devices].include?(device)
  else
    !opts[:ignore_devices].include?(device)
  end
end
tick() click to toggle source
# File lib/riemann/tools/md.rb, line 18
def tick
  status = File.read('/proc/mdstat')
  res = mdstat_parser.parse(status)

  res.each do |device, member_status|
    next unless report_device?(device)

    report(
      service: "mdstat #{device}",
      description: member_status,
      state: member_status =~ /\AU+\z/ ? 'ok' : 'critical',
    )
  end
rescue Racc::ParseError => e
  report(
    service: 'mdstat',
    description: "Error parsing mdstat: #{e.message}",
    state: 'critical',
  )
rescue Errno::ENOENT => e
  report(
    service: 'mdstat',
    description: e.message,
    state: 'critical',
  )
end