提示:最好关闭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
展示成果
版权声明,个人原创,欢迎各位交流探讨。