使用 Linux Shell 脚本定时监控 web 服务(进程挂掉自动重启服务和可用物理内存、可用 Swap 分区不足时重启服务)

最近 Ricky 这边又有一个需求,当检测到服务器(操作系统依旧为:CentOS Linux )上的 resin 进程挂掉或者操作系统的可用物理内存、可用 Swap 分区不足时,自动重启 resin 的进程(什么是 resin ?resin 与 tomcat 是类似的,您就把它当做 tomcat 来看待就好了)。

Linux Shell 脚本主要实现以下功能:

  • 每 30 秒检测一次;
  • 当检测到进程挂掉时,自动重启相关进程;
  • 当操作系统的可用物理内存低于 150 MB 时,自动重启相关进程;
  • 当操作系统的可用 Swap 分区低于 400 MB 时,自动重启相关进程;
  • 将自动重启的时间和原因记录到日志文件中。

部署:

1 、编写脚本,在命令行界面输入:

[root@host ~]# vi /root/port.sh

键入小写字母 i ,进入编辑模式,将以下脚本复制粘贴进去(请根据实际需要进行相应地修改):

#!/bin/bash

# 加载环境变量
source /etc/profile

# resin 监听的端口号为 8080 ,检查 8080 端口是否有进程在监听
port=`netstat -ntlp | grep -c ":8080"`
#echo $port

# 如果 8080 端口没有进程在监听
if [ "$port" = "0" ]; then
        # 则重新启动 resin 的进程
        /usr/java/resin/bin/httpd.sh start
        # 将日志写入日志文件
        echo $(date "+%F %H:%M:%S") - already restart port - process not found >> /root/port.log
# 如果 8080 端口有进程在监听
elif [ "$port" = "1" ]; then
        let memory_free=`free -m | grep Mem: | awk -F ' ' '{print $4}'`
        let swap_free=`free -m | grep Swap: | awk -F ' ' '{print $4}'`

        # 可用物理内存低于 150 MB 时重启 resin ,并将日志写入日志文件
        if [ $memory_free -lt 150 ] ; then
                /usr/java/resin/bin/httpd.sh restart
                echo $(date "+%F %H:%M:%S") - already restart port - memory_free lt 150 >> /root/port.log
        # 可用 Swap 分区低于 400 MB 时重启 resin ,并将日志写入日志文件
        elif [ $swap_free -lt 400 ] ; then
                /usr/java/resin/bin/httpd.sh restart
                echo $(date "+%F %H:%M:%S") - already restart port - swap_free lt 400 >> /root/port.log
        fi
fi

按一次 ESC 键退出编辑模式,然后键入 “ :wq ” 保存并退出。

2 、……

剩余的步骤请参见这篇文章:《使用 Linux Shell 脚本定时监控 web 服务(进程挂掉自动重启服务和检测首页是否能返回状态码 200 )》

日志格式说明:

[root@host ~]# cat /root/port.log
2018-09-18 11:50:04 - already restart port - process not found
2018-10-16 21:10:03 - already restart port - memory_free lt 150
2018-10-16 21:12:46 - already restart port - swap_free lt 400
[root@host ~]#

日志格式为:时间 – already restart port – 重启原因,其中重启原因有三种:

  1. process not found :检测到相关进程不存在;
  2. memory_free lt 150 :检测到操作系统的可用物理内存低于 150 MB ;
  3. swap_free lt 400 :检测到操作系统的可用 Swap 分区低于 400 MB 。

 

其他相关文章:

打赏作者
这里是 “ CCIE 工程师社区 ” 官方的捐款通道,您是否可以考虑请我们喝杯咖啡呢?

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

Was this article helpful?

Related Articles

Leave A Comment?

This site uses Akismet to reduce spam. Learn how your comment data is processed.