通过yum安装
yum install -y mailx
vi /etc/mail.rc
在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" #邮箱密码(某些邮箱需要授权码)
set smtp-auth=login
**
测试邮箱发送是否成功
echo “邮件内容”|mail -s 标题 邮箱号
如果可以收到邮件,说明mailx配置成功
**
ssh-keygen
生成到默认目录(一路按回车键): ~/.ssh/
免密登陆:
ssh-copy-id -i .ssh/id_rsa.pub root@需要免密到的机器IP
创建脚本文件
vim watch.sh
添加监控脚本
#!/bin/bash
date=$(date "+%Y-%m-%d %H:%M:%S")
#磁盘监控
disk_use=`ssh 172.xx.x.6 'df -h' | grep "/dev/sda1" | awk '{printf $5}' | cut -d '%' -f 1`
if [ $disk_use -ge 85 ];then
echo "172.xx.x.6 在$date 磁盘使用: $disk_use%" | mail -v -s "磁盘告警" xxxx@qq.com
fi
#cpu监控
cpu_average=`ssh 172.xx.x.6 'top -b -n 1' | grep "load" | awk '{printf $10 $11 $12}'`
cpu_use=`ssh 172.xx.x.6'top -b -n 1' | grep "Cpu" | awk '{printf $2}' | cut -d "." -f 1`
if [ $cpu_use -ge 80 ];then
echo "172.xx.x.6在$date CPU 使用:$cpu_use%" | mail -v -s "172.xx.x.6CPU告警" xxxx@qq.com
fi
#内存监控
men_use=`ssh 172.xx.x.6 'free' | awk '/Mem/{printf("%.2f\n"), $3/$2*100}' | cut -d "." -f 1`
if [ $men_use -ge 80 ];then
echo "172.xx.x.6在$date 内存使用: $men_use%" | mail -v -s "172.xx.x.6内存告警" xxxx@qq.com
fi
#检测nginx服务
nginx=`ssh 172.xx.x.6 'ps -ef' | grep nginx | grep -v "grep" | wc -l`
if [ $nginx -eq 0 ]; then
echo "172.xx.x.6在$date 系统检测到nginx,已挂掉,启动中...." | mail -v -s "172.xx.x.6 nginx服务告警" xxxx@qq.com
/etc/init.d/nginx start #启动nginx命令
echo "172.xx.x.6在$date nginx启动完成" | mail -v -s "172.xx.x.6nginx服务告警" xxxx@qq.com
#else
# echo "172.xx.x.6在$date 系统检测到nginx运行正常" | mail -v -s "172.xx.x.6nginx服务告警" xxxx@qq.com
fi
#检测php服务
php=`ssh 172.xx.x.6'ps -ef' | grep php | grep -v "grep" | wc -l`
if [ $php -eq 0 ]; then
echo "172.xx.x.6在$date 系统检测到php已挂掉,启动中...." | mail -v -s "172.xx.x.6 php服务告警" xxxx@qq.com
/etc/init.d/php-fpm7.1 start #启动php服务
echo "172.xx.x.6在$date php启动完成" | mail -v -s "172.xx.x.6php服务告警" xxxx@qq.com
fi
crontab -e
*/20 * * * * root /usr/local/server/watch.sh