智能监测自动重启Apache服务器的Shell脚本

 更新时间:2014年07月05日 11:04:10   投稿:junjie  
这篇文章主要介绍了智能监测自动重启Apache服务器的Shell脚本,实现监控Apache不可用时,第一次强制重启,第二次邮件通知管理员,需要的朋友可以参考下

由于需要监控某些要求高可用性的Apache服务器,除了专业的监控报警设备,低成本下在Apache服务器上写一个自动监测Apache状态的脚本是个不错的主意。在网上搜索了许多类似的脚本,但由于局限性较大,也都存在一些不完善的地方,所以自己写了一个。

脚本功能与特点

1、能够每隔一段时间监测Apache服务器的可用性(由于本脚本直接模拟了客户端的访问,因此这里的“可用性”是指切切实实的正常可访问)
2、在出现无法访问的情况下,能够自动重启Apache服务(强行重启)
3、在重启后仍然无法正常访问的话,自动执行更进一步的操作(比如发送邮件、重启服务器等)
后文将给出此脚本的具体使用方法与注释,大家可以根据自己的情况手动修改(需了解一定bash shell编程)。

脚本内容:

#!/bin/bash
URL=”http://127.0.0.1/”
curlit()
{
curl –connect-timeout 15 –max-time 20 –head –silent “$URL” | grep '200′
# 上面的15是连接超时时间,若访问localhost的HTTP服务超过15s仍然没有正确响应200头代码,则判断为无法访问。
}
doit()
{
if ! curlit; then
# 如果localhost的apache服务没有正常返回200头,即出现异常。执行下述命令:
sleep 20
top -n 1 -b >> /var/log/apachemonitor.log
# 上面将top命令内容写入日至文件备查
/usr/bin/killall -9 apache2 && /usr/bin/killall -9 php5-cgi && /usr/bin/killall -9 httpd && /usr/bin/killall -9 http && /usr/bin/killall -9 apache && /usr/bin/killall -9 php-cgi > /dev/null
# 兼容起见,杀死了各种apache的进程。可以根据自己apache服务的特点修改
sleep 2
/etc/init.d/apache2 start > /dev/null
/etc/init.d/httpd start > /dev/null
# 兼容起见,执行了两种apache重启命令,可根据需要自己修改。
echo $(date) “Apache Restart” >> /var/log/apachemonitor.log
# 写入日志
sleep 30
# 重启完成后等待三十秒,然后再次尝试一次
if ! curlit; then
# 如果仍然无法访问,则:
echo $(date) “Failed! Now Reboot Computer!” >> /var/log/apachemonitor.log
# 写入apache依然重启失效的日志
reboot
# 重启机器呗。实际上重启整个服务器是一种非常不得已的做法。本人并不建议。大家根据需要自己修改,比如短信、邮件报警什么的。
fi
sleep 180
fi
}
sleep 300
# 运行脚本后5分钟后才开始正式工作(防止重启服务器后由于apache还没开始启动造成误判)
while true; do
# 主循环体
doit > /dev/null
sleep 10
done

使用方法
使用方法非常灵活,总之让上面的脚本在开机后一直执行就行了。由于脚本使用了curl命令,因此还需要安装curl环境。安装curl的方法:
根据发行版选择下面两条命令即可:

yum install curl
apt-get install curl

若希望将其自动启动,则可以把脚本写入rc.local中即可。

相关文章

  • Linux 中LVS NAT 配置步骤的详解

    Linux 中LVS NAT 配置步骤的详解

    这篇文章主要介绍了Linux 中LVS NAT 配置步骤的详解的相关资料,这里列出详细的实现步骤,需要的朋友可以参考下
    2017-08-08
  • 一问弄懂Shell变量四大分类

    一问弄懂Shell变量四大分类

    Shell变量分为环境变量、本地变量、位置参数变量和特殊变量,本文就详细的介绍一下这四种变量的具体使用,具有一定的参考,感兴趣的可以了解一下
    2023-05-05
  • shell脚本换行问题实战记录

    shell脚本换行问题实战记录

    换行相信大家都不陌生,下面这篇文章主要给大家介绍了关于shell脚本换行问题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Linux中rz命令和sz命令使用详解大全

    Linux中rz命令和sz命令使用详解大全

    在linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件了,下面我们就来简单的介绍一下rz 和 sz 命令实例
    2015-10-10
  • Shell 编程:Bash空格的那点事

    Shell 编程:Bash空格的那点事

    空格,一个看不见的字符,很不起眼,也正由于不起眼,很多人经常忽略它,导致代码出错,却还找不着北。这里,我们来聊聊bash中空格的那点事
    2015-01-01
  • Putty实现自动登陆远程Linux主机的方法

    Putty实现自动登陆远程Linux主机的方法

    这篇文章主要介绍了Putty实现自动登陆远程Linux主机的方法,本文讲解的是使用公钥和密钥方式实现自动登录,需要的朋友可以参考下
    2015-04-04
  • Linux中搭建FTP服务器的方法

    Linux中搭建FTP服务器的方法

    这篇文章主要介绍了Linux中搭建FTP服务器的方法 的相关资料,需要的朋友可以参考下
    2015-09-09
  • linux命令学习之10个网络命令和监控命令

    linux命令学习之10个网络命令和监控命令

    下面列出来的10个基础的每个linux用户都应该知道的网络和监控命令,大家参考使用吧
    2014-01-01
  • linux xz压缩解压的方法小结

    linux xz压缩解压的方法小结

    这篇文章主要介绍了linux xz压缩解压的方法小结 ,文中给大家提到了linux解压.tar.xz压缩包 的方法,需要的朋友可以参考下
    2019-07-07
  • 三分钟学会Linux基本指令

    三分钟学会Linux基本指令

    本文小马将把Linux一般比较常见的指令给大家一一列举出来,为了大家忘记某些指令后,可以方便查询记忆,再次小马建议,Linux指令并不需要去特别花时间专门记忆,只需要多进行操作实现就行,这篇文章主要介绍了Linux基本指令,需要的朋友可以参考下
    2022-12-12

最新评论