????????某公司随着业务的不断发展,所使用的Linux服务器也越来越多。管理员希望编写一个简单的性能监控脚本,放到各服务器中,当监控指标出现异常时发生告警邮件。
1、编写名为sysmon.sh的Shell监控脚本。
2、监控内容包括CPU使用率,内存使用率、根分区的磁盘占用率。
3、百分比只需精确到个位,如7%、12%、23%等。
4、出现以下任一情况时告警:磁盘占用率超过90%,CPU使用率超过80%,内存使用率超过90%.
5、告警邮件通过mail命令发送到monitor@bdqn.com。
6、结合crond服务,每半小时执行一次监控脚本。
[root@yang ~]# vim sysmon.sh
#!/bin/bash
# 监控CPU使用率
cpu=`expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')`
echo "CPU使用率为:$cpu%"
# 监控内存使用率
mug=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
echo "内存的使用率为:$mug%"
# 监控硬盘
dug=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}')
echo "磁盘占用率为:$dug%"
# 设置警告日志文件,告警邮箱
# 日志文件的变量
ALOG="/opt/alert.txt"
# 发送到邮箱的变量
AMAIL="root"
# 判断是否记录告警
if [ $cpu -gt 20 ]
then
echo "CPU占用率:$cpu%" >> $ALOG
fi
if [ $mug -gt -6 ]
then
echo "内存使用率为:$mug%" >> $ALOG
fi
if [ $dug -gt 20 ]
then
echo "磁盘占用率为:$dug" >> $ALOG
fi
if [ -f $ALOG ]
then
cat $ALOG | mail -s "Host Alert" $AMAIL
rm -rf $ALOG
fi
[root@yang ~]# chmod +x sysmon.sh
[root@yang ~]# ./sysmon.sh
CPU使用率为:1%
内存的使用率为:13%
磁盘占用率为:18%
您在 /var/spool/mail/root 中有新邮件
?
[root@yang ~]# crontab -e
30 * * * * /root/sysmon.sh