需求描述
- 编写名为sysmon.sh的Shell监控脚本。
- 监控内容包括CPU使用率,内存使用率、根分区的磁盘占用率。
- 百分比只需精确到个位,如7%、12%、23%等。
- 出现以下任一情况时告警:磁盘占用率超过90%、CPU使用率超过80%,内存使用率超过90%。
- 告警邮件通过mail命令发送到monitor@bdqn.com。
- 结合crond服务,每半小时执行一次监控脚本。
思路步骤
- 编写 sysmon.sh脚本。
- 测试 sysmon.sh脚本的执行情况。
- 设置 crontab计划任务。
1.编写sysmon.sh脚本
[root@localhost ~]# vim sysmon.sh
#!/bin/bash
#CPU
cpu=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
echo "CPU使用率: $cpu %"
#内存
nc=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
echo "内存使用率: $nc %"
#磁盘
cp=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}')
echo "磁盘占用率: $cp %"
# 设置警告日志文件告警邮箱
# 日志文件的变量
ALOG="/opt/lll.txt"
# 发送到邮箱的变量
AMAIL="root"
# 判断是否记录告警
if [ $cpu -gt 20 ]
then
echo "CPU占用率: $cpu %" >> $ALOG
fi
if [ $nc -gt 6 ]
then
echo "内存使用率: $nc %" >> $ALOG
fi
if [ $cp -gt 20 ]
then
echo "磁盘占用率: $cp %" >> $ALOG
fi
# 判断是否发送告警邮件,最后删除告警日志文件
if [ -f $ALOG ]
then
cat $ALOG | mail -s "Host Alert" $AMAIL
rm -rf $ALOG
fi
2.执行的结果
3.crontab计划任务
[root@localhost ~]# crontab -e
30 * * * * /root/sysmon.sh
邮件
[root@localhost ~]# cat /var/spool/mail/root