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

需求描述

  • 编写名为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

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值