tomcat假死与异常监控

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
脚本如下: errormessage1="java.lang.OutOfMemoryError" if cat ${tomcatpath}/logs/catalina.out |grep "$errormessage1">/dev/null then restartFlag="yes" 其实就是通过cat |grep 的方式来查找异常特征字符串是否在运行日志文件中存在,ቤተ መጻሕፍቲ ባይዱ在则 代表出现了该类异常,当然这是需要程序对该类异常做了处理的(捕捉到并输出到控制台)。 附带说明:语句 cat „ 加上了 >/dev/null是为了不输出具体查询的结果的 3)tomcat重启 检查出这些异常时,一般先通过重启服务的方式来优先恢复服务,则对tomcat进行脚本重启。 tomcat重启的原理是:先通过命令获取tomcat进程id,然后kill掉该进程id,再重启tomcat命 令即可,具体命令如: #tomcat部署路径 tomcatpath="/data/apps/tomcat" #获取tomcat进程id pid=$(ps -ef |grep java| grep ${tomcatpath} |grep -v grep | awk '{print $2}') kill -9 $pid cd ${tomcatpath} ./bin/startup.sh
4)配置Linux定时任务 将脚本编辑保存到文件check.sh 设置脚本文件为可执行 #chmod u+x check.sh 添加到定时任务 #cront -e 后编辑添加 */10 * * * * /data/apps/scripts/check.sh >> /data/apps/scripts/check.log 2>&1 (此处设置为每10分钟检查一次) 5)附完整的同时监控假死和内存溢出/数据库链接异常的监控脚本代码 #!/bin/sh # ---------------------------------# 服务器错误检查与服务重启定时脚本 # 每10分钟执行一次 # ---------------------------------export LANG="zh_CN.GB18030" export LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" export SUPPORTED="zh_CN.GB18030:zh_CN:zh" export SYSFONT="lat0-sun16" export SYSFONTACM="8859-15" tomcatpath="/data/apps/tomcat" errormessage1="com.alibaba.druid.pool.GetConnectionTimeoutException" errormessage2="java.lang.OutOfMemoryError" exetime=$(date +"%y-%m-%d_%H:%M:%S") checkUrl="http://localhost/web/„” echo "check ${tomcatpath}/logs/catalina.out at ${exetime}" pid=$(ps -ef |grep java| grep ${tomcatpath} |grep -v grep | awk '{print $2}') echo "pid=${pid}" #是否重启标志,yes重启,no不重启 restartFlag="no" ## hicode=$(curl -o /dev/null --retry 3 -s -w %{http_code} $checkUrl) if [ "$hicode" != "200" ] then echo "code=${hicode}" restartFlag="yes" elif cat ${tomcatpath}/logs/catalina.out |grep "$errormessage1">/dev/null then restartFlag="yes" elif cat ${tomcatpath}/logs/catalina.out |grep "$errormessage2">/dev/null then restartFlag="yes" fi ## if [ $restartFlag = "yes" ] then #此处添加告警,可通过发邮件或发短信两种方式 kill -9 $pid
tomcat假死与异常监控 在开发的tomcat服务应用中, 经常会遇到tomcat假死情况, 除了每次出现假死时找出原 因外,有时候由于业务的重要性,需要及时发现服务异常并及时解决。所以本人就想通 过Linux定时任务定时监控的方式来预防这个问题, 一旦发现及时通知告警并重启服务, 然后才通过日志查明原因从根本上解决。 1)tomcat假死状态 处于假死状态时,后台日志不在生成,服务链接没有响应,但tomcat的进程是存在的, 所以若要监控是否处于假死状态可以从日志和服务链接方面入手, 但由于检测日志比较 麻烦,本人选择的是通过选择某个服务链接获取其访问状态码http_code,若状态码不 正常则确认为tomcat服务异常。 例如: url=“http://localhost/„.” code=$(curl -o /dev/null --retry 3 -s -w %{http_code} $url) echo “${code}” 上面脚本中url变量为选择的适合的监控链接,code就是该链接正常时应该返回的返回 码,正常是为200,有时候由于浏览器缓存可能返回302等也是正常的,所以建议最好选 择那种后台的链接能够返回200的,这样检测起来比较方便。 2)tomcat异常监控 在tomcat运行日志中,经常会出现一些异常,对于有些异常我们可以不用管,但例如数 据库链接异常、内存溢出异常等,这些异常会直接导致服务不能正常使用,所以需要对 这些类型的异常进行监控,同样的本人也是通过Linux脚本实时检查tomcat运行日志的 方式来检测服务状态。
mv ${tomcatpath}/logs/catalina.out ${tomcatpath}/logs/catalina.${exetime} cd ${tomcatpath} echo "wait at $(date +"%y-%m-%d_%H:%M:%S")" #sleep 60 ./bin/startup.sh echo "restart at $(date +"%y-%m-%d_%H:%M:%S")" else echo "checkweb is normal at $(date +"%y-%m-%d_%H:%M:%S")" fi
相关文档
最新文档