使用Shell脚本监控主机
2023-12-20 22:02:21
实验环境
? ? ?某公司随着业务的不断发展,所使用的Linux服务器也越来越多,管理员希望编写一个简单的性 能监控脚本,放到各服务器中,当监控指标出现异常时发送告警邮件。
需求描述
> 编写名为sysmon.sh的 Shell 监控脚本。
> 监控内容包括CPU使用率、内存使用率、根分区的磁盘占用率。
> 百分比只需精确到个位,如7%、12%、23%等。
> 出现以下任一情况时告警:磁盘占用率超过90%、CPU使用率超过80%、内存使用率超过 90%。
> 告警邮件通过 mail 命令发送到monitor@bdqn.com。
> 结合crond服务,每半小时执行一次监控脚本。?
?
[root@node01 ~]# vim sysmon.sh
#!/bin/bash
# 监控CPU
CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
echo "CPU使用率:$CUG %"
# 监控内存
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="/mnt/alert.txt"
# 发送到邮箱的变量
AMAIL="root"
# 判断是否记录告警
if [ $CUG -gt 20 ]
then
echo "CPU占用率:$CUG %" >> $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@node01 ~]# chmod +x sysmon.sh //添加执行权限
[root@node01 ~]# ./sysmon.sh
> 结合crond服务,每半小时执行一次监控脚本。
[root@node01 ~]# crontab -e
30 * * * * /root/sysmon.sh
文章来源:https://blog.csdn.net/2301_77023501/article/details/135109073
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!