centos 7系统资源(CPU、内存、磁盘)自动监控并邮件告警脚本(初测版)

提示:最好关闭firewall、selinux服务,开启ssh服务(这里是通过ssh链接)

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

禁用SELINUX

setenforce 0
sed -i “s/^SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config

安装mailx

yum install -y mailx
vi /etc/mail.rc

追加如下内容

set ssl-verify=ignore
set from=xxxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user="xxxx@qq.com"
set smtp-auth-password="xxxx"   #去qq邮箱生成授权码xxxx
set smtp-auth=login

做个小测试
echo “邮件内容”|mail -s 标题 xxxx@qq.com
如果你可以收到邮件,说明你的mailx配置成功

创建一个txt文档来储存需要监控的主机ip

cat > test.txt << EOF
192.168.3.1
192.168.3.2
EOF

生成ssh免登陆密钥

ssh-keygen

依次完成每台主机的首次连接,只有首次需要密码登陆

ssh-copy-id root@192.168.3.1
ssh root@192.168.3.1
ssh-copy-id root@192.168.3.2
ssh root@192.168.3.2

下面开始啦

vi watch.sh

#!/bin/bash
    
for IP in `cat test.txt`
do
    ssh root@$IP
    
    date=`date +%Y-%m-%d.%H:%M`
    ip=`ifconfig ens33 | grep "netmask" | awk '{printf $2}'`

#磁盘监控,这里不监控扩展盘

    disk_use=`df -h | grep "/dev/sda1" | awk '{printf $5}' | cut -d '%' -f 1`
    
    if [ $disk_use -ge 90 ];then
    
    echo "$ip 在$date 磁盘使用: $disk_use%" | mail -v -s "告警" xxxx@qq.com
    
    fi

#cpu监控

    cpu_average=`top -b -n 1 | grep "load" | awk '{printf $10 $11 $12}'`
    
    cpu_use=`top -b -n 1 | grep "Cpu" | awk '{printf $2}' | cut -d "." -f 1`
    
    if [ $cpu_use -ge 80 ];then
    
    echo "$ip 在$date CPU 使用:$cpu_use%" | mail -v -s "告警" xxxx@qq.com
    
    fi

#内存监控

    men_use=`free | awk '/Mem/{printf("%.2f\n"), $3/$2*100}' | cut -d "." -f 1`
    
    if [ $men_use -ge 80 ];then
    
    echo "$ip 在$date 内存使用: $men_use%" | mail -v -s "告警" xxxx@qq.com
    
    fi
done

然后设置crontab,定义每3分钟执行一次

cronta -e

*/20 * * * * source watch.sh

展示成果

在这里插入图片描述
版权声明,个人原创,欢迎各位交流探讨。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值