因为最近公司的几台php的服务器,到晚上9-10点的时候负载有点偏高,所以boss要求当服务器的load,每5分钟负载的负载达到25的时候,发一份邮件
1.安装并配置mail
#如果没有mail命令,则安装:
yum install mailx -y
在结尾处,添加2行 vim /etc/mail.rc set [email protected] smtp=smtp.126.com set [email protected] smtp-auth-password=123456 smtp-auth=login
ps:这个地方是设置发件人的邮箱地址,不是收件人的。
2.编写脚本
#!/bin/bash RETVAL=0 FAILCOUNT=0 SCRIPT_PATH="/home/crontab" MAIL_GROUP="[email protected] [email protected]" h=$(hostname) #centos7 get ip add #ip=$(ifconfig em1|grep netmask|awk '{print $2}') #centos6 get ip add ip=$(ifconfig eth0|grep 'inet addr'|cut -d: -f2|cut -d" " -f1) load=$(uptime | awk -F 'load average: ' '{print $2}') m1=$(echo $load | awk -F ', ' '{print $1}') m5=$(echo $load | awk -F ', ' '{print $2}') m15=$(echo $load | awk -F ', ' '{print $3}') m1u=$(echo $m1 | awk -F '.' '{print $1}') m5u=$(echo $m5 | awk -F '.' '{print $1}') m15u=$(echo $m15 | awk -F '.' '{print $1}') #if [ "$m5u" -gt "6" ] && [ "$m15u" -gt "6" ]; then if [ "$m5u" -gt "25" ]; then echo "Subject: Server_name ${h} Load ${load} time $(date +%Y-%m-%d' '%H:%M:%S)"|mail -s "99server_load" ${MAIL_GROUP} else echo "load is fine" fi
3.设置,每分钟执行一次监控脚本
#check load */1 * * * * /home/crontab/load_check.sh >/dev/null 2 >&1
4.查看邮件
分享工作中shell脚本监控服务器负载并通过邮件报警