1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#使用qq邮箱作为发件箱 #设置QQ邮箱开启pop3/smtp服务,需要设置独立密码 #设置->账户->找到POP3/SMTP服务->开启 #如果希望自己搭建邮件服务器可以使用postfix+dovecot //先关闭系统自带的sendmail service sendmail stop chkconfig sendmail off //在mail.rc底部增加5行配置 vim /etc/mail.rc set from=10001@qq.com set smtp=smtp.qq.com set smtp-auth-user=10001 set smtp-auth-password=yourpassword set smtp-auth=login //使用以下命令就能发送邮件了(可以发送多个邮箱) echo "邮件内容..." | mailx -v -s "邮件标题..." tangxiaofeng@daoxila.com 10002@qq.com #写3个监控脚本 nginx.sh mysql.sh disk.sh //nginx.sh 用NC穿到80端口 w2表示2秒后自动退出 // $? 系统预定义变量 获取上一条命令的返回结果 0:成功 1:失败 // shell脚本需要有可执行权限 chomd 744 nginx.sh #!/bin/bash #nginx.sh nc -w2 localhost 80 if [ $? -ne 0 ] then echo 'nginx挂了啊..' | mailx -v -s 'nginx down.' tangxiaofeng@daoxila.com /etc/init.d/nginx start fi //mysql.sh #!/bin/bash #mysql.sh nc -w2 localhost 3306 if [ $? -ne 0 ] then echo 'mysql挂了啊..' | mailx -v -s 'mysql down.' tangxiaofeng@daoxila.com service mysql start fi //disk.sh df | awk 'NR==3{print int($4)}' df命令可以查看硬盘使用情况 //awk 'NR==3{print int($4)}'可以把第3行第4列的值扣出来并转成int型 #!/bin/bash #disk.sh num=`df | awk 'NR==3{print int($4)}'` if [ $num -ge 70 ] then echo "硬盘空间已经使用了${num}%,超过了警戒值70%" | mailx -v -s 'disk space warning' tangxiaofeng@daoxila.com fi #将监控脚本添加到crontab,每隔10分钟执行一次 // >/dev/null 把输出(默认标准输出)重定向到/dev/null(可以理解为linux的回收站) // 2>&1 把错误输出也定向到标准输出 // >/dev/null 2>&1 可以理解为不管标准输出还是错误输出都忽略掉 crontab -e */10 * * * * /bin/sh /usr/local/sh/nginx.sh > /dev/null 2>&1 */10 * * * * /bin/sh /usr/local/sh/mysql.sh > /dev/null 2>&1 */10 * * * * /bin/sh /usr/local/sh/disk.sh > /dev/null 2>&1 |