def send_alert(subject,message):
msg=MIMEText(message,'plain','utf-8')
sender=msg['From']=Header(sender_email,UTF-8)
receivers=[r for r in to_list]
try:
smtpObj=smtplib.SMTP(server_address_port[0], server_address_port[1])
if not isinstance(smtpObj.login(user=sender_email,password=password),Exception):
smtpObj.sendmail(from_addr=sender,to_addrs=receivers,msg=msg.as_string())
print(Alert sent successfully!)
else :
raise Exception('Failed login attempt.')
except Exception as e :
return False,e.args
finally:
del(msg,sender,receivers)
def monitor_cpu_memory():
while True:
cpu_usage_percent=os.getloadavg()[0]*100/len(os.cpu_count())
mem_total=float(sp.check_output(['free','-m']).splitlines()[-2].decode().strip('\n').replace(', ',' ').split()[1])
free_mem_mb=int(float(mem_total)-float((sp.check_output([df,block-size=m,/]).split(\n)[1]).split()[1]))
if(cpu_usage_percentcpu_threshold or ((free_mem_mb/(total_free_mem*1024))<memory_ratio)):
message=fSystem Alert! Current system status:\n\nCPU Usage Percentage:{round(cpu_usage_percent)}%\nAvailable Memory MB:{int(free_mem_mb)}
result=send_alert(title=Critical System Condition Detected!,message=message)
break
elif(result==False):
continue
sleep(interval_time_in_minutes * 60)
if __name__ == '__main__':
start=time.time()
monitor_cpu_memory()