读书人

Linux中运用shell+python实现监控系统

发布时间: 2012-11-26 11:48:50 作者: rapoo

Linux中使用shell+python实现监控系统负载+邮件报警

1. 获取ip、cpu、内存信息

ip使用ifconfig获得

localip=$(ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | cut -f2 -d:)

空闲cpu由mpstat获得

cpuidle=$(mpstat | grep all | awk '{print $11}')

内存使用情况由free获得

freemem=$(free | grep Mem | awk '{print $4}')

totalmem=$(free | grep Mem | awk '{print $2}')

pcent=$(free | grep Mem | awk '{print $4/$2}')

#! /usr/bin/env pythonimport smtplib import sysfrom email.mime.text import MIMEText  mailto_list=[""]  mail_host = "smtp.126.com" mail_user = "monitor_algo" mail_pass = "" mail_postfix="126.com"  def send_mail(to_list, sub, context):     me = mail_user + "<"+mail_user+"@"+mail_postfix+">"     msg = MIMEText(context)     msg['Subject'] = sub     msg['From'] = me     msg['To'] = ";".join(to_list)     try:         send_smtp = smtplib.SMTP()         send_smtp.connect(mail_host)         send_smtp.login(mail_user, mail_pass)         send_smtp.sendmail(me, to_list, msg.as_string())         send_smtp.close()         return True     except (Exception, e):         print(str(e))         return False if __name__=="__main__":#    print ("start") #    for a in range(1, len(sys.argv)):#        print sys.argv[a]    if (True == send_mail(mailto_list,sys.argv[1],sys.argv[2])): pass#        print ("sucess")    else: pass#        print ("failed") 


3. 加入crontab定时任务

注意一点,crontan中的环境变量与用户环境的环境变量不一样,因其不会从缺省的用户profile文件中读入环境变量参数,最简单的方法是用source命令(.)

*/1 * * * * . /etc/profile; sh /application/search/monitor.sh >> /application/search/monitor.log


读书人网 >UNIXLINUX

热点推荐