LNMP.jpg

脚本介绍

本脚本主要用于监控LNMP环境中的PHP/Nginx/MySQL服务是否可用,若不可用则写入到日志,并通过Mutt发送邮件进行通知,可以参考文章《CentOS 6 安装配置 msmtp&mutt 发送监控邮件》以及《在Linux/VPS上配置MailX邮件通知》或者也可以自行配置SendMail服务,脚本代码请自行修改。

脚本完整代码

该Shell脚本已经在军哥的LNMP环境测试成功。

宝塔、WDCP等搭建的可能不支持,有需要请自行修改。
脚本中的收件人邮箱、监测站点的url,请修改为你自己的
#!/bin/bash
###获取当前时间
time="$(date +"%Y%m%d-%H:%M")"
###查看fpm服务是否运行
i=`netstat -an | grep php-cgi | wc -l`
if [ $i = 0 ]
        then
               ###重启php服务
               /etc/init.d/php-fpm restart
               ### 写入日志 
               echo "$time php-fpm service is down .... restart..." >> /var/log/php-fpm.log
               ### 提取日志文件最新的20行内容并写入到txt文档
               tail -n 20 /var/log/php-fpm.log > /root/php-mail.txt
               ### 提取txt内容并邮箱通知
               mutt -s "$time php-fpm service restart" [email protected] < /root/php-mail.txt
fi
###查看mysql服务是否运行
i=`netstat -anpt | grep mysqld | awk '{print $4}' | awk -F: '{print $2}' | wc -l`
if [ $i = 0 ]
        then
               ### 重启mysql服务
               /etc/init.d/mysql restart
               ### 写入日志
               echo "$time mysqld service is down .... restart..." >> /var/log/mysql-error.log
               ### 提取日志文件最新的20行内容并写入到txt文档
               tail -n 20 /var/log/mysql-error.log > /root/mysql-mail.txt
               ### 提取txt内容并邮箱通知
               mutt -s "$time Mysql service restart" [email protected] < /root/mysql-mail.txt
fi
###查看nginx服务是否运行
i=`netstat -anpt | grep nginx | awk '{print $4}' | awk -F: '{print $2}' | wc -l`
if [ $i = 0 ]
        then
               ### 重启nginx服务
               /etc/init.d/nginx restart
               ### 写入日志
               echo "$time nginx service is down .... restart..." >> /var/log/nginx-error.log
               ### 提取日志文件最新的20行内容并写入到txt文档
               tail -n 20 /var/log/nginx-error.log > /root/nginx-mail.txt
               ### 提取txt内容并邮箱通知
               mutt -s "$time Nginx service service" [email protected] < /root/nginx-mail.txt
fi

## 判断状态码是否为200
url=https://yourdomain.com
i=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $url)
if [ $i -ne 200 ]; then
                 /etc/init.d/mysql restart
                 /etc/init.d/nginx restart
                 /etc/init.d/php-fpm restart
                 echo " $time 监测页: $url 状态码: $i 行为: 异常&重启" >> /var/log/httpcode.log
fi

食用方法

1、在root目录下保存脚本代码,并另存为monitor-lnmp.sh(按需自行更换名称)

2、给予文件可执行权限

chmod a+x /root/monitor-lnmp.sh

3、加入到 crond 任务计划

执行命令 crontab -e 添加一条任务记录,例如每十分钟执行一次检测

*/10 * * * * bash /root/monitor-lnmp.sh

相关推荐

  1. 哪吒监控:赏心悦目的服务器监控面板、轻量运维系统!
  2. LNMP 编译安装 ngx_pagespeed 模块给网站提速!
  3. TeaWeb-可视化web代理服务及资源监控
  4. LNMP编译Nginx启用Brotli压缩算法
  5. iptables封禁BT/PT/SPAM(垃圾邮件)和自定义端口/关键词一键脚本
  6. Linux 安装配置 Zabbix 运维监控系统
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/423.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。