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分钟一次。



  • 相关阅读:
    Python----定义
    [转载]Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
    彻底明白IP地址——计算相关地址
    [转载] 教你如何迅速秒杀掉:99%的海量数据处理面试题
    [转载]从B 树、B+ 树、B* 树谈到R 树
    [转载]Java抽象类和接口的学习
    [转载]字符串匹配的Boyer-Moore算法
    [转载]字符串匹配的KMP算法
    [转载]孤儿进程与僵尸进程[总结]
    [转载]Huffman编码压缩算法
  • 原文地址:https://www.cnblogs.com/zhoulf/p/4040059.html
Copyright © 2011-2022 走看看