智能监测自动重启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中编写自己的并发队列类(Queue 并发阻塞队列)

    linux中编写自己的并发队列类(Queue 并发阻塞队列)

    这篇文章主要介绍了linux中编写并发队列类,功能有:并发阻塞队列、有超时限制、有大小限制
    2013-12-12
  • linux 权限管理命令脚本解析

    linux 权限管理命令脚本解析

    这篇文章主要为大家介绍了linux 权限管理命令脚本解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • shell进度条追踪指令执行时间的场景分析

    shell进度条追踪指令执行时间的场景分析

    这篇文章主要介绍了shell进度条如何追踪指令执行时间,本文中的进度条可以应用于大部分场景。不用修改进度条函数的任何代码,就可以直接使用,特别适合那些可预估指令执行时间的场景,需要的朋友可以参考下
    2022-06-06
  • shell命令行参数用法简介

    shell命令行参数用法简介

    本文介绍了shell命令行参数的用法,对于普通脚本语言诸如perl python等,写一个脚本程序,包装命令行参数时,一般都是用getopt之类的;c语言也类似
    2014-04-04
  • Shell编程指南

    Shell编程指南

    这里汇总了一下关于shell编程的相关知识点,由简入深,非常的不错,这里推荐给大家
    2014-12-12
  • linux shell自定义函数(定义、返回值、变量作用域)介绍

    linux shell自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。下面说说它的定义方法,以及调用需要注意那些事项
    2013-02-02
  • Shell脚本制作的终端会话回放功能脚本分享

    Shell脚本制作的终端会话回放功能脚本分享

    这篇文章主要介绍了Shell脚本制作的终端会话回放功能脚本分享,本文分两个文件,Record.sh是用来记录你所执行的命令和屏幕的输出的,而Replay.sh是用来回放Record.sh所录制的内容的,需要的朋友可以参考下
    2014-11-11
  • Linux禁止普通用户su至root的解决方法

    Linux禁止普通用户su至root的解决方法

    很多朋友不清楚linux如何禁止普通用户su到root,这里需要修改两个配置文件,具体详细配置大家通过本文了解下吧
    2017-08-08
  • Shell中创建序列和数组(list、array)的方法

    Shell中创建序列和数组(list、array)的方法

    这篇文章主要介绍了Shell中创建序列和数组(list、array)的方法,本文讲解了seq方法生成以及通过内部{begin..end}生成法,需要的朋友可以参考下
    2015-07-07
  • shell通过正则匹配ip地址实例代码

    shell通过正则匹配ip地址实例代码

    这篇文章主要给大家介绍了关于shell如何通过正则匹配ip地址的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用shell具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11

最新评论