您当前的位置:首页 > 计算机 > 系统应用 > Linux

CentOS7服务器(监测CPU,内存,磁盘,nginx,php服务)监控+邮件告警脚本

时间:03-29来源:作者:点击数:

1、安装mailx

通过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配置成功

2、配置免密登录

**

ssh-keygen 

生成到默认目录(一路按回车键): ~/.ssh/

免密登陆:

ssh-copy-id -i .ssh/id_rsa.pub  root@需要免密到的机器IP

3、创建脚本

创建脚本文件

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


4、设置crontab每隔20分执行一次

crontab -e
*/20  *  *  *  * root /usr/local/server/watch.sh

效果展示

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门