当前位置:首页 > 教程 > 正文内容

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

admin3年前 (2022-11-01)教程1127

1、安装mailx

通过yum安装


postfix的产生是为了替代传统的sendmail.相较于sendmail,postfix在速度。性能和稳定性上都更胜一筹,由于linux中自带了postfix,为了postfix和sendmail两者间不产生冲突,需要切换MTA(mail transter agent,即邮件传输代理),禁用postfix,执行如下命令


alternatives --config mta //请按 2


显示内容如下

There are 2 programs which provide ‘mta’. //共有 2 个提供“mta”的程序。

开启sendmail服务,设置开机自启,并禁用postfix服务


systemctl start sendmail
systemctl enable sendmail
systemctl mask postfix

 

yum install -y mailx

vi /etc/mail.rc


在mail.rc中加入如下配置



set from=username@126.com

set smtp=smtp.126.com

set smtp-auth-user=username@126.com

set smtp-auth-password=password

set smtp-auth=login

   注意配置中的smtp-auth-password不是邮箱登录密码,是邮箱服务器开启smtp的授权码,每个邮箱开启授权码操作不同(网易126邮箱开启菜单:设置-> 客户端授权密码)。



**

测试邮箱发送是否成功


echo “邮件内容”|mail -s 标题 邮箱号

1

如果可以收到邮件,说明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

 

还有另外脚本不需要ssh登录

#!/bin/bash

date=`date +%Y-%m-%d.%H:%M`


#磁盘监控

disk_use=`df -h | grep "/dev/sda1" | awk '{printf $5}' | cut -d '%' -f 1`

if [ $disk_use -le 90 ];then

echo -e "127.0.0.1: $ip \n时间: $date \n磁盘使用率为: $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 -e "服务器IP地址 :$ip \n时间: $date \nCPU 使用率为: $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 -e "服务器IP地址: $ip \n时间: $date \n内存使用率为: $men_use%" | mail -v -s "警告!!!" xxxx@qq.com

fi

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

crontab -e


*/20  *  *  *  * source /usr/local/server/watch.sh



其中判断语法

1、-gt:大于,greater than。


2、-eq:等于,equal。


3、-lt:小于,less than。


4、-ge:大于等于,greater than or equal。


5、-le:小于等于,less than or equal。


6、-ne:不等于,not equal。


扫描二维码推送至手机访问。

版权声明:本文由Cale-Blog发布,如需转载请注明出处。

本文链接:https://blog.yidecloud.top/?id=14

分享给朋友:

“CentOS7服务器(监测CPU,内存,磁盘,nginx,php服务)监控+邮件告警脚本” 的相关文章

关于终端提交高斯教程

现对两台linux服务器终端(远程)递交任务方式进行说明:1 终端SSH软件安装根据自己的喜好安装适合自己的SSH终端软件(温馨提示:下载软件请到官网下载),本人推荐带有FTP服务的ssh终端软件如:MobaXterm、WindTerm等,或者Putty等2 地址用户名和密码2.1 局域网Gauss...

青龙短信登录安装

青龙短信登录可以是XDD/nolan或者是maiark,此文介绍后两者的安装方法!1 maiark安装简单粗暴命令:bash <(curl -s -S -L https://maiark-1256973477.cos.ap-shanghai.m...

Bilibili之cookie

Bilibili之cookie

一 打开B站网站https://www.bilibili.com/,二 打开F12,工程工具三 扫码登陆网络-nav-cookie...

使用Gaussian时的几个实用脚本和命令

大部分转发自科音论坛sob大佬教程,并稍微修改了一下1 依次执行多个指令比如要依次执行g09 < 1.gjf > 1.out、g09 < 2.gjf > 2.out、g09 < 3.gjf > 3.out,可以只输入一条命令,每条命令间用分号隔开:g09 <...

汉化版本Aarpl-i18n引导安装黑群晖7.2

汉化版本Aarpl-i18n引导安装黑群晖7.2

1 引导文件下载第一个是原版大神的地址:https://github.com/fbelavenuto/arpl 第二个是国内ing大神修改的地址:https://github.com/wjz304/arpl-i18n 2 下载选项说明实体机选在下载img的固件,然后使用写入软件比如ImageWrit...