def get_load_average(self): command = ['sysctl', 'vm.loadavg'] #pipe.stdout return as byte string pipe = subprocess.Popen(command, stdout=subprocess.PIPE) #convert byte string to string utf-8 stringUnicode = pipe.stdout.read().decode(self.encodeType).split(" ") a1, a5, a15 = map(float, stringUnicode[2:5]) ''' logica do analizador a5 >= 50% ''' if a5 >= 0.5: list = self.get_process() message = "Load Average 1 Minutes: %.2f, 5 Minutes: %.2f 15 Minutes: %.2f" % (a1, a5, a15) self.logger.debug(message) process_list = self.get_process() final_string = '' for x in process_list: final_string += x.decode(self.encodeType) if self.send_mail: sender = MailSender(message + "\n================================================\n" + final_string) sender.sendmail() self.logger.debug("Email send") return "%.2f, %.2f, %.2f" % (a1, a5, a15)
def get_file_system(self, message="CAPACITY WARNING:"): command = ['df', '-h'] pipe = subprocess.Popen(command, stdout=subprocess.PIPE) #output_lines is a byte list[] output_lines = pipe.stdout.readlines() pattern1 = "9[0]%" pattern2 = "9[8]%" for line in output_lines: line = str(line.strip(), self.encodeType) if re.search(pattern1, line): if not self.flagToSendMail: if self.send_mail: sender = MailSender("%s %s" % (message, line), "CAPACITY WARNING 90%") sender.sendmail() self.flagToSendMail = True self.logger.warning("CAPACITY WARNING 90% %s %s" % (message, line)) if re.search(pattern2, line): if not self.flagToSendMail2: if self.send_mail: sender = MailSender("%s %s" % (message, line), "CAPACITY WARNING 98% Oh My God, hurry up.") sender.sendmail() self.flagToSendMail2 = True self.logger.critical("CAPACITY WARNING 98% Oh My God, hurry up. %s %s" % (message, line))