2025年4月12日 星期六 乙巳(蛇)年 正月十三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 系统应用 > Linux

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

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

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

效果展示

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