(前提必须可以通过ssh免密钥连接)
该方法为制定一台mail主机为系统信息收集点,用ssh从其他主机收集系统性能数据,在此主机上结合mail一并发送。
te.txt 为ip地址列表
user.txt 为邮件接收人列表
#!/bin/bash
date=`date +%Y-%m-%d_%H:%M:%S`
for ip in `cat te.txt`
do
#磁盘监控
name=`ssh root@$ip 'hostname'`
disk_use=`ssh root@$ip 'df -h' | grep "/dev/" | awk '{printf $5}' | sed 's/%/\n/g'`
for disk_use in $disk_use
if [ $disk_use -ge 5 ];then
for user in `cat user.txt`
do
echo -e "IP:$ip \n 主机名:$name \n 在$date 磁盘使用: $disk_use%" | mail -s "磁盘告警" $user
done
fi
done
#cpu监控
cpu_average=`ssh root@$ip 'top -b -n 1' | grep "load" | awk '{printf $10 $11 $12 $13}'`
cpu_use=`ssh root@$ip 'top -b -n 1' | grep "Cpu" | awk '{printf $2}' | cut -d "." -f 1`
if [[ $cpu_use -ge 2 ]];then
for user in `cat user.txt`
do
echo -e "IP:$ip \n 主机名:$name \n 在$date CPU 使用:$cpu_use% \n 过去1分钟、5分钟、15分钟CPU平均值为:$cpu_ave
rage" | mail -s "CPU告警" $user
done
fi
#内存监控
men_use=`ssh root@$ip 'free' | awk '/Mem/{printf("%.2f\n"), $3/$2*100}' | cut -d "." -f 1`
if [ $men_use -ge 1 ];then
for user in `cat user.txt`
do
echo -e "IP:$ip \n 主机名:$name\n 在$date 内存使用: $men_use%" | mail -s "内存告警" $user
done
fi
done