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 [email protected]
set smtp=smtp.qq.com
set smtp-auth-user="[email protected]"
set smtp-auth-password="xxxx"   #去qq邮箱生成授权码xxxx
set smtp-auth=login

做个小测试
echo “邮件内容”|mail -s 标题 [email protected]
如果你可以收到邮件,说明你的mailx配置成功

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

cat > test.txt << EOF
192.168.3.1
192.168.3.2
EOF

生成ssh免登陆密钥

ssh-keygen

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

ssh-copy-id [email protected]
ssh [email protected]
ssh-copy-id [email protected]
ssh [email protected]

下面开始啦

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 "告警" [email protected]
    
    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 "告警" [email protected]
    
    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 "告警" [email protected]
    
    fi
done

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

cronta -e

*/20 * * * * source watch.sh

展示成果

centos 7系统资源(CPU、内存、磁盘)自动监控并邮件告警脚本(初测版)_第1张图片
版权声明,个人原创,欢迎各位交流探讨。

你可能感兴趣的:(监控,linux运维,系统监控)