zoukankan      html  css  js  c++  java
  • Linux中使用Crontab定时监测维护Tomcat应用程序的方法

    Linux中使用Crontab定时监测维护Tomcat应用程序的方法

    功能需求: 定时监测发布的某项应用程序是否可用,如果不可用,立即执行处理措施,实现自动化运维工作。

    监测的应用接口: 新闻接口、天气接口
    处理方法:应用接口不可用时自动重启Tomcat,并发送告警邮件给相关人员

    
    #!/bin/bash
    #---------------------------------------------------------
    # 功能说明:
    #	监控指定HTTP服务是否可用,如果不可用立即重启Tomcat
    #
    # 使用说明:
    #	1. 将此脚本放置在/home/opentsp/crontab/目录下。
    #	2. 修改脚本执行权下为可执行权限。
    #	3. 添加到定时任务中,定时执行时间(建议为20分钟)
    #	4. 修改邮件发送人员信息列表(当服务重启时发邮件给相关人员)
    #                                       - 周凌飞(2014-08-13)
    #---------------------------------------------------------
    export LC_ALL=zh_CN.UTF-8
    
    #网站地址、参数
    SERVER_NAME="趣驾云接口服务"
    URL_2="http://127.0.0.1/get_rss_news?p=%7b%27chId%27:%27TIYU%27%7d"
    KeyWorld_2='<title>'
    URL_3="http://127.0.0.1/get_json_weather?p=%7blon:116.407617,lat:39.993956,date:1%7d"
    KeyWorld_3='temperature'
    
    #邮件发送列表
    mail_ary=(
    xxxxxxxxx@navinfo.com
    xxxxxxxxx@navinfo.com
    xxxxxxxxx@navinfo.com
    )
    
    #接口调用失败的处理方法
    function doFail(){
    	local ipinfo=$(ifconfig |sed -n '2p'|awk '{print substr($2,6)}');
    	# 发送邮件
    	for _v in ${mail_ary[*]} ; do
    		echo "[$SERVER_NAME 异常] - [$(date -d "0 min" +"%Y-%m-%d %H:%M:%S")] - [请求地址: $1] - [请求返回码: $2]" | mail -s ${ipinfo}服务异常 ${_v}
    	done
    	# 写入日志
    	echo "[ERROR] - [$(date -d "0 min" +"%Y-%m-%d %H:%M:%S")] - 返回码[$2] - 重启Tomcat服务" >> detect-http.log
    	# 关闭Tomcat
    	sh /home/opentsp/crontab/ibr-shutdown.sh
    	exit;
    }
    
    #请求超时时间设置
    TIME_OUT=40
    function doCheck(){
    	local URL_X=$1;
    	local KeyWorld_X=$2;
    	HTTP_STATUS_CODE=`curl -m $TIME_OUT -o /dev/null -s -w "%{http_code}" "${URL_X}"`
    	if [ $HTTP_STATUS_CODE != 200 ];then
    		#请求失败
    		echo "-> Fail - 返回码${HTTP_STATUS_CODE}";
    		doFail ${URL_X} ${HTTP_STATUS_CODE};
    	else
    		#服务器正常响应,检查返回内容
    		if curl -m ${TIME_OUT} -s ${URL_X} | grep -q ${KeyWorld_X};then
    			echo "-> SUCCESS";
    		else
    			echo "->> Fail";
    			# 返回内容错误处理
    			doFail ${URL_X} ${HTTP_STATUS_CODE};
    		fi
    	fi
    }
    
    #
    #检查 - 新闻
    doCheck ${URL_2} ${KeyWorld_2}
    #检查 - 天气
    doCheck ${URL_3} ${KeyWorld_3}
    
    
    

    将以上代码放入到Linux的定时任务中即可,定时任务时间建议为20分钟一次。



  • 相关阅读:
    Uva 10779 collector's problem
    poj 2728 最优比率树(最小生成树问题)
    LA 3126 二分图匹配 最小路径覆盖
    poj 1149 最大流构图
    Step By Step(Java XML篇)
    Step By Step(Java 输入输出篇)
    Step By Step(Java 集合篇)
    Step By Step(Java 线程篇)
    Step By Step(Java 反射篇)
    Step By Step(Java 国际化篇)
  • 原文地址:https://www.cnblogs.com/zhoulf/p/4040059.html
Copyright © 2011-2022 走看看