自动化系统中服务监控脚本的实现思路

背景

在自动化测试系统中加入服务监控的脚本:如监控Nginx服务或MySQL服务是否开启,如果没有开启,则启动对应服务。

监控思路

  • 通过端口监控
    • 在服务器上通过ss, netstat, lsof等命令监控
    • 在远端通过telnet, nmap, nc等方法监控
  • 监控服务进程
    ps -ef | grep mysql | wc -l
  • 根据wget或curl命令对返回值进行判断
  • 连接数据库,根据返回值判断
    mysql -uroot -proot -e "select version();" &>/dev/null; echo $?

实现

方案一

通过ss命令并过滤进程端口号判断是否开启。

#!/bin/bash
if [ "`ss -lntup | grep 3306 | awk -F "[ :]+" '{print $5}'`" = "3306" ]
    then
        echo "MySQL status Running."
    else
        echo "MySQL status Stopped"
        /etc/init.d/mysqld start
    fi
方案二

通过lsof命令过滤端口号并转换成数字判断是否开启。

#!/bin/bash
if [ `lsof -i tcp:3306|wc -l` -gt 0 ]
    then
        echo "MySQL status Running."
    else
        echo "MySQL status Stopped"
        /etc/init.d/mysqld start
    fi
方案三

通过nmap远端端口检查。

#!/bin/bash
#这行用来判断是否安装了nmap,如果没有则安装
[ `rpm -qa nmap|wc -l` -lt 1 ] && yum install nmap -y &> /dev/null
if [ `nmap 127.0.0.1 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]
    then
        echo "MySQL status Running."
    else
        echo "MySQL status Stopped"
        /etc/init.d/mysqld start
    fi
方案四

通过ps命令过滤进程来判断。

#!/bin/bash
if [ `ps -ef|grep -v grep|grep mysql|wc -l` -gt 0 ]
    then
        echo "MySQL status Running."
    else
        echo "MySQL status Stopped"
        /etc/init.d/mysqld start
    fi

总结

以上是服务监控脚本的几种常用方法,关键是判断服务是否开启的思路,个人比较倾向于过滤关键字的端口或进程,并转为数字,避免空值。

如果是通过客户端进行模拟,需要事先将程序放到LNMP服务器的站点目录,通过curl或者wget访问其地址去判断返回值是否成功即可。

猜你喜欢

转载自blog.csdn.net/hbmovie/article/details/80416479
今日推荐