Shell 脚本应用(二)

发布时间:2023年12月20日

实验案例:使用Shell脚本监控主机

实验环境

某公司随着业务的不断发展,所使用的Linux服务器也越来越多,管理员希望编写一个简单的性 能监控脚本,放到各服务器中,当监控指标出现异常时发送告警邮件。

需求描述

>编写名为sysmon.sh的Shell监控脚本.

>监控内容包括CPU使用率,内存使用率、根分区的磁盘占用率。

>百分比只需精确到个位,如7%.12%、23%等。

>出现以下任一情况时告警:磁盘占用率超过90%.CPU使用率超过80%.内存使用率超过 90%.

>告警邮件通过mail命令发送到monitor@bdqn.com.

>结合crond 服务,每半小时执行一次监控脚本。

操作步骤

expr 100 - $(mpstat | awk '{print $12}' | awk -F. '{print $1}' | tail -1)

查看CPU使用率

expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}')

查看内存使用率

?df -hT | grep "/$" | awk '{print $6}' | awk -F% '{print $1}'

查看根分区的磁盘占用率

?编写sysmon.sh脚本

[root@lgcllc ~]# vim sysmon.sh   //编辑监控脚本 
#!/bin/bash
#监控CPU
CPU=$(expr 100 - $(mpstat | awk '{print $12}' | awk -F. '{print $1}' | tail -1) )
echo "CPU使用率:$CPU %"

#监控内存
MEM=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}') )
echo "内存使用率:$MEM %"

#监控磁盘
DUG=$(df -hT | grep "/$" | awk '{print $6}' | awk -F% '{print $1}')
echo "磁盘占用率:$DUG %"

#设置警告日志文件,告警邮箱
#日志文件的变量
ALOG="/mnt/alert.txt"
#发送到邮箱的变量
AMAIL="root"
#判断是否记录告警邮箱
if [ $CPU -ge 80 ]
then
   echo "CPU使用率:$CPU %" >> $ALOG
fi

if [ $MEM -ge 90 ]
then
   echo "内存使用率:$MEM %" >> $ALOG
fi

加入crond服务

[root@lgcllc ~]# crontab -e   //编写脚本 每半小时执行一次监控脚本

30 * * * * /root/sysmon.sh

脚本运行结果

文章来源:https://blog.csdn.net/m0_73258133/article/details/135114540
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。