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

Linux中使用Crontab定时监测维护Tomcat应用程序的方法的更多相关文章

  1. linux中使用Crontab定时执行java的jar包无法使用环境变量的问题

    1.crontab简单使用 cmd 其实就是5个星星的事情,随便百度一下吧 5个时间标签用来标注执行的设定.比如每5分钟执行一次/5 * * * cmd 要特别注意 2.有些命令在命令行里执行很好,到 ...

  2. linux下使用crontab定时备份MYSQL数据库的方法:

    摘要 linux下使用crontab定时备份MYSQL数据库的方法: 只需按照下面3步做,一切都在你的掌控之下: 第一步:在服务器上配置备份目录代码: ------------------------ ...

  3. 【Linux基础】crontab定时命令详解

    周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“crontab”,是 ...

  4. Linux中的crontab命令用法

    Crontab 在linux中,crontab的用来设置定期执行指定的命令,我们可以用它来指定一些需要重复的事情,Linux系统的用户只需将想要定期要执行的命令序列加到crontab文件中,操作系统即 ...

  5. Linux中利用crontab创建计划任务

    在linux中启动crontab服务: /etc/init.d/crond  start crontab的命令格式 crontab -l   显示当前的crontab 文件(默认编写的crontab文 ...

  6. 【转】Linux 中清空或删除大文件内容的五种方法(truncate 命令清空文件)

    原文: http://www.jb51.net/article/100462.htm truncate -s 0 access.log -------------------------------- ...

  7. python (18)在linux中如何实现定时发送邮件到指定邮箱,监测任务

    最近要用到,定时发送邮件功能: 如何定时,当然要用到linux中crontab了 如下的代码能够定时发送邮件 #!/usr/bin/env python # -*- coding=utf-8 -*- ...

  8. Linux下的crontab定时执行任务命令详解

    在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“cr ...

  9. linux命令之crontab定时执行任务

    一.crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动c ...

随机推荐

  1. MYSQL复习笔记4-基本SQL语句

    Date: 20140115Auth: Jin参考:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#select一:数据库操作1:显示数据 ...

  2. (转)探索C++的秘密之详解extern "C",这就是为什么很多.lib被我们正确调用确总是无法解析的。

    (转载,绝对的有用) lib被我们正确调用确总是无法解析.这是C++编译和C编译的区别 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C&qu ...

  3. 【java】代码优化点

    1.对数据库数据的计数统计,尽量在数据库查询时候就使用count()进行统计,避免返回List到项目中统计List大小 2.对于数据库中表中字段数据过长,例如存储的是text类型而不是verchar类 ...

  4. ECSHOP中transport.js和jquery冲突的解决方法

    jQuery 和global.js 冲突 百度和google多次,根据网上的大多数建议和自己测试,解决办法如下:删除global.js 或者global.js 文件的10-13行屏蔽//Object. ...

  5. 面经 | 我是如何通过校招拿到京东的Offer的

    本文来自粉丝投稿,原作者:红鼻子熊. 版权归Hollis所有. OFFER:京东2018校招物流研发岗 个人:211小硕 面试时间:2017年秋天 整体:三轮面试,前两轮为技术面试,最后为hr面试 一 ...

  6. mac下源码安装redis

    转载:http://www.jianshu.com/p/6b5eca8d908b 下载安装包 redis-3.0.7.tar.gz 官网地址:http://redis.io/download 解压:t ...

  7. 谈谈Ext JS的组件——布局的用法续一

    盒子布局 盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域.这也是比較常有的布局方式. 使用 ...

  8. iOS:UITableViewCell使用详解

    转载自:http://my.oschina.net/u/2340880/blog/410421

  9. Android权限操作之uses-permission详解

    本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...

  10. CSS权重的等级划分

    CSS权重 CSS权重指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式. 权重的等级 可以把样式的应用方式分为几个等级,按照等 ...