分享工作中shell脚本监控服务器负载并通过邮件报警

因为最近公司的几台php的服务器,到晚上9-10点的时候负载有点偏高,所以boss要求当服务器的load,每5分钟负载的负载达到25的时候,发一份邮件

1.安装并配置mail

#如果没有mail命令,则安装:
yum install mailx -y

在结尾处,添加2行
vim /etc/mail.rc
set from=wohon999@126.com smtp=smtp.126.com
set smtp-auth-user=wohon999@126.com smtp-auth-password=123456 smtp-auth=login

ps:这个地方是设置发件人的邮箱地址,不是收件人的。

2.编写脚本

#!/bin/bash
RETVAL=0
FAILCOUNT=0
SCRIPT_PATH="/home/crontab"
MAIL_GROUP="88192437@qq.com 1970392429@qq.com"

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.查看邮件

qq20161122132511

 

此条目发表在Shell分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注