运维日常

Shell脚本检测HTTP服务状态

2019-11-23  本文已影响0人  大白菜的猪猪

编程需求:

在项目有web服务器的时候,监控服务器的状态是非常重要的一项任务,虽然可以通过手动执行命令来进行检测,但是显然非常的耗费时间和人力;因此采用脚本+周期性计划任务的形式显得更加的合理化!

使用curl命令对网站进行监控时,可以根据HTTP服务端返回的状态码,判断一台Web服务器状态是否正常!当出现错误的时候,应该还能够自动实现报警功能!!!


源代码:


#!/bin/bash

#功能描述:使用curl访问具体的HTTP页面,检测HTTP状态码

#CURL选项说明

#-m 设置超时时间;

#-s 设置静默时间;

#-o 下载数据另存为;

#-w 返回附加信息,http状态码;

#http服务器IP地址

url=web服务器IP地址/index.html对应页面的html文件

如:127.0.0.1/index.html

#日期

date=$(date +"%Y-%m-%d %H:%M:%S")

#HTTP状态码

status_code=$(curl -m 3 -s -o /dev/null -w %{http_code} $url)

#邮件报警

mail_to="root@localhost"

mail_subject="http_warning"

#如果状态码不等于200,即判定为http服务出现异常

if [ $status_code -ne 200 ];then

        mail -s $mail_subject $mail_to <<- EOF

        检测时间为:$date

        $url 页面异常,服务器返回状态码:${status_code}

        请尽快检查

        EOF

else

cat >> /var/log/http_check.log <<- EOF

        $date "$url 页面正常"

        EOF

fi


脚本运行结果


当状态错误时,这里是没有启动http服务时:

/root/check_http_curl.sh

您在 /var/spool/mail/root 中有邮件

#进入邮件系统查看

mail -u root

N 36 root Sat Nov 23 14:25 20/705 "http_warning"

邮件信息如下:

检测时间为:2019-11-23 14:25:41

http://127.0.0.1/index.html 页面异常,服务器返回状态码:404

请尽快检查


正常状态下

/root/check_http_curl.sh

cat /var/log/http_check.log

检测时间为:2019-11-23 14:46:30

"http://127.0.0.1/index.html 页面访问正常"

在/var/log/httpd_check.log文件内就会记录查询时间,状态正常的消息


Shell+crontab周期性计划任务


与周期性计划任务连用,实现自动运行脚本自动检测HTTP服务状态.


1.给脚本赋予执行权限,不然无法启动脚本

chmod +x check_http_curl.sh

2.添加周期性计划任务

crontab -e -u root

*/1 * * * * /root/check_http_curl.sh

具体频率应该根据实际情况设置,这里为了方便观察,写的是每分钟都运行一次!

检测时间为:2019-11-23 14:53:01

"http://127.0.0.1/index.html 页面访问正常"

检测时间为:2019-11-23 14:54:01

"http://127.0.0.1/index.html 页面访问正常"

上一篇下一篇

猜你喜欢

热点阅读