shell脚本写出监控内存,磁盘使用率的脚本,超过阈值,用“wall”命令发警报

1 脚本运行前准备

需要用到“bc”软件来进行运算

yum -y install bc

2 创建一个脚本

vim /opt/.zhuzhu.sh
#!/bin/bash 
# author chenjiao
#获取内存信息
MEMTOTAL=$(awk '/^MemTotal/ {print $2}' /proc/meminfo)
MEMAV=$(awk '/^MemAvailable/ {print $2}' /proc/meminfo)
MEMUSED=$(echo "$MEMTOTAL - $MEMAV" |bc)
MEMINFO=$(echo "$MEMUSED * 100 / $MEMTOTAL"|bc)
if [[ $MEMINFO -gt 70 ]];then
        echo "Memory usage is too high: $MEMINFO%" >> /tmp/info.txt
fi
#获取 / 磁盘信息
DISKTOTAL=$( df |grep -w "/"|awk '{print $2}')
DISKUSED=$( df |grep -w "/"|awk '{print $3}')
DISKINFO=$(echo "$DISKUSED * 100 / $DISKTOTAL" |bc)
if [[ $DISKINFO -gt 80 ]];then
        echo "Disk usage is too high: $DISKINFO%" >> /tmp/info.txt
fi

if [[ -f /tmp/info.txt ]];then
        cat /tmp/info.txt |wall
fi
mv /tmp/{info.txt,.info.txt.`date +"%Y.%m.%d-%H:%M:%S"`}

MEMTOTAL 是为了查找到总内存大小,MEMAV这个变量是为了取出可用的内存大小。用总内存大小减去可用内存大小,即为已用的内存数。free这命令也能截取出来,但本人觉得这个更加简洁
我服务器就一块磁盘,所以我grep -w 精准匹配到“/” 下,来进行计算
这个脚本的阈值,可以根据实际需求来调整

可以给这个脚本一个执行权限

chmod +x /opt/.zhuzhu.sh

3 结合crontab来定时检查内存和磁盘使用情况

crontab -e

创建任务,如果是普通用户,请记得加-u 用户名
crotab执行命令的时间间隔,日期取决于实际需求,我设置为隐藏文件名,每五分钟执行一次

*/5 * * * * /bin/bash /opt/.zhuzhu.sh

截图一个内存超过70% 的公告来看看~

[root@k8s-master ~]# Broadcast message from root@k8s-master (Sun Aug
7 22:45:01 2022):

Memory usage is too high: 75%

然后使用这台服务器的其他用户都可以看到这个wall的警告内容了
完结,撒花~~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值