class ServerMonitor::MegaCliVDStatus
Public Class Methods
config()
click to toggle source
# File lib/servermonitor/megacli_vd_status.rb, line 22 def self.config @config ||= VDConfiguration.new end
configure() { |config| ... }
click to toggle source
# File lib/servermonitor/megacli_vd_status.rb, line 26 def self.configure yield(config) end
run()
click to toggle source
# File lib/servermonitor/megacli_vd_status.rb, line 30 def self.run # Get current hostname fhostname = `hostname -f` # Get the VD state from megacli binary and grep for "State" keyword raid_status = `#{self.config.megacli} -LDInfo -Lall -aALL | #{self.config.grep} "State"` # Define eympty array in_in = [] # Define empty variable for raid state vd_status = nil # raid_status.each_line { |l| in_in << l.chomp } # Check virtual drive status in_in.each do |i| Regexp.new('State\s*:\s*Optimal').match?(i) ? vd_status = "Optimal".upcase : vd_status = "NOT Optimal".upcase # Display VD Status if vd_status == "Optimal" puts "Virtual drive status is " + vd_status.to_s + " on hostname " + fhostname puts exit 0 unless self.config.exit_codes == false else puts "Virtual drive status is " + vd_status.to_s + " on hostname " + fhostname puts exit 1 unless self.config.exit_codes == false end if self.config.email_to != nil time = Time.now.strftime("%d.%m.%Y %H:%M") subject = "Daily RAID check STARTED on #{fhostname} at #{time}. RAID STATE: #{vd_status}." body = "Daily RAID check: #{vd_status}" email = ServerMonitor::EMail.new(self.config.email_from, self.config.email_to, self.config.smtp_address, self.config.smtp_port, self.config.smtp_username, self.config.smtp_password, subject, body) email.deliver end end end