检测Nginx服务是否正常运行(详解)

2024-06-04 6140阅读

大家好今天给大家带来shell脚本的一个实例(检测Nginx服务是否正常运行)

需求:检测Nginx服务是否正常的运行,如果不在运行那么就启动Nginx服务器,那么如果启动Nginx失败,那么通过邮件报警的方式通知我们;

一、分析

1:监测Nginx服务是否正在运行如下:

[root@yankerp ~]# netstat -anput | grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27228/nginx: master

使用以上这条命令能够很清楚的看到Nginx正在运行

2:启动Nginx服务器,我们可以通过它的绝对路径去启动Nginx 我的Nginx安装路径为:/usr/local/nginx其中/sbin/下就是Nginx的启动项;

/usr/local/nginx/sbin/nginx

3:如果启动失败,那么就通过邮件报警的方式通知

怎么样可以判断Nginx启动失败,我们可以使用特殊的状态变量 ?  如果 / u s r / l o c a l / n g i n x / s b i n / n g i n x  这条命令运行之后如果启动失败那么它 ? 如果/usr/local/nginx/sbin/nginx 这条命令运行之后如果启动失败那么它 ? 如果/usr/local/nginx/sbin/nginx 这条命令运行之后如果启动失败那么它?就会输出非0的数值表示失败,那么至于邮件报警的方式这里我采用了sendemail

二、编写脚本

开头注释:#!/bin/bash一句话代表着此脚本中的内容是通过bash解析器来运行的

编写脚本的规范 输入时间–创建者的信息–联系邮箱地址–以及版本等等。如下:

#!/bin/bash

#Date: 17:17 2018-03-04

#Author: yankai

#Email: ywyankerp@163.com

#Function: Nginx monitoring

#Version: 3.1

2)定义变量

. /etc/init.d/functions #加载函数库,后面会用到

RED_COLOR=‘\E[1;31m’ #定义颜色(红色变量)输出更美观

RES=‘\E[0m’ #同上

NGX=netstat -anput | grep nginx | wc -l #定义检测Nginx是否运行变量 通过wc命令获取行号

DA=date +%Y-%m-%d #标准的时间输出后面会用到

3)定义函数

接下来就开始写第一个函数了,首先我们写一个获取本机的URL看看是否能够成功http://localhost

function Nginx_URL(){ #定义了监测本地URL函数

wget --spider -q -o /dev/null --tries=1 -T 5 http://localhost #安静的输出—/dev/null 这里的wget参数不解释

if [ “KaTeX parse error: Expected 'EOF', got '#' at position 12: ?" -ne 0 ] #̲如果以上wget获取本地的ur…DA” /bin/false >> /var/log/nginx_url_error.log

#输出一条NginxURL检测失败,那么后面调用DA时间变量输出到/var/log/nginx_url_error.log日志中

fi #最后fi结束if语句

}

那么我们在这里想一个问题,那么如果wget获取不到本地的URL 意味着Nginx可能会宕机,那么我们继续写检测Nginx是否运行的函数

function main(){ #定义总函数

Nginx_URL #调用NGinxurl函数来测试nginx本地的url是否能够正常运行

Nginx_server #调用检测nginx函数 来测试nginx服务器是否正在运行

}

main #最后结束main函数

function Nginx_server(){ #定义检测Nginx函数

if [ "KaTeX parse error: Expected 'EOF', got '#' at position 15: NGX" -ne 0 ] #̲NGX这个变量的运行结果不等于0 非0代表正在运行

then #那么

echo -en “KaTeX parse error: Undefined control sequence: \n at position 30: …inx is running!\̲n̲{RES}” #就输出Nginx is running 信息;

else #否则启动NGINX

/usr/local/nginx/sbin/nginx

fi

if [ “$?” -ne 0 ];then 注意:在这里需要提前安装好sendemail邮件报警 可以参考我之前的文章这里不在演示

/usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u “Nginx alarm” -o message-content-type=html -o message-charset-utf8 -xu yankerpcs -xp 123456yk -m “Nginx has serious downtime” &>/dev/null

fi

}

最后我们定义了两个函数同时检测Nginx的状态情况,最后我们需要定义总函数来调用以上函数进行最后的测试

function main(){ #定义总函数

Nginx_URL #调用NGinxurl函数来测试nginx本地的url是否能够正常运行

Nginx_server #调用检测nginx函数 来测试nginx服务器是否正在运行

}

main #最后结束main函数。

三、结尾:

经过了上面的几种操作,我们已经知道了Nginx的各种判断来确定Nginx的运行状况,同时我们也设置了邮件报警的机制来发送报警消息给运维人员。那么最后的脚本如下:

#!/bin/bash

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

检测Nginx服务是否正常运行(详解) 第1张

检测Nginx服务是否正常运行(详解) 第2张

检测Nginx服务是否正常运行(详解) 第3张

检测Nginx服务是否正常运行(详解) 第4张

检测Nginx服务是否正常运行(详解) 第5张

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)

检测Nginx服务是否正常运行(详解) 第6张

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

b (备注软件测试)**

[外链图片转存中…(img-nRIewEIi-1713039305032)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]