使用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。