检测 tomcat 挂掉,发送邮件

原文:https://blog.csdn.net/smile326/article/details/52293158

场景需求

tomcat偶尔并不是那么稳定,可能在长时间运行时突然就崩掉了,任何接口都得不到处理,没有返回值,当然,我们需要对各种参数进行配置,实现调优。当然的当然,最大的原因还是在于部署其中的代码,而这又是和我们的水平密切相关的TAT~ 
很多企业仍然会将tomcat用于生产环境,这个时候出现崩溃就比较棘手,有时候运营那边大半夜或者周末一个电话,我们就不得安宁了。。。 
本文通过简短的VB脚本,实现对tomcat服务进行定时检测,当服务持续出现失败时,对tomcat进行重启,并发送邮件通知自己。 
当然,重启可不是用来解决问题的根本的,所以,本文仅做参考!不过还是能应一时之需,也是一种手段。

进入主题

1).准备工作 
你需要一个用来测试tomcat是否活着的接口,写得越轻越好,什么逻辑都不需要,返回固定的字符串。 
比如,我准备的接口的地址是http://localhost:9080/iCheck_sziit/ServiceTest,访问成功返回字符串:yisinian 
2).学习如何使用blat324发送邮件,可以自行百度。下载(https://sourceforge.net/projects/blat/)好了之后,修改配置文件,运行目录下的.bat文件,即可实现发送邮件,非常好用。记得使用的邮箱开启对应的服务,否则收不到邮件。本文的vb代码和blat324使用的代码有需要可以留邮箱,因为不是本文主题就不贴配置代码(我真的会配置)~我是来骗评论的== 
blat324搞定之后你所需要调用的只有一个.bat文件了。 
3).贴我的完整VB代码:

rem option explicit
 on error resume next 
 dim str,str1
 str = "yisinian"

 do while 1

  set objXML = createObject("MSXML2.ServerXMLHTTP")
  set objFSO = createObject("Scripting.FileSystemObject")
  const ForAppending = 8
  objXML.open"get","http://localhost:9080/iCheck_sziit/ServiceTest",false
  objXML.send()
  str1 = objXML.responseText
if objXML.responseText = "" then 

    if not objFSO.fileexists("log.ini") then
        set objFile = objFSO.createTextFile("log.ini")
        objFile.close
    End if

    set fso = objFSO.openTextFile("log.ini",8)
    strnow = now 

   createobject("wscript.shell").run "C:\apache-tomcat-6.0.44-1\bin\shutdowm.bat",0

   rem "发送邮件"
   createObject("wscript.shell").run "C:\blat324\full\sendmail.bat",0

   wscript.sleep 10*1000
   createobject("wscript.shell").run "C:\apache-tomcat-6.0.44-1\bin\startup.bat",0
    with fso
       .writeline strnow&"    "&"---------程序启动------------"
       .writeline strnow&"    "&"检查地址 http://localhost:9080/iCheck_sziit/ServiceTest  访问失败  tomcat 运行出错"
       .writeline strnow&"    "&"启动服务器 执行命令 cmd.exe /c C:\apache-tomcat-6.0.44-1\bin\startup.bat  执行成功" 
    end with

else  if instr(str1,"yisinian")>0 then

    set objTextFile = objFSO.openTextFile("aaa.ini",ForAppending,True)
       if not objFSO.fileexists("aaa.ini") then
        set objFile = objFSO.createTextFile("aaa.ini")
        objFile.close
       End if

    objTextFile.writeline(objXML.responseText)
    objTextFile.close
    else
     set fso = objFSO.openTextFile("log.ini",8)
     strnow =now 
     fso.writeline strnow&"    "&"------iCheck_sziit项目没有正常运行---------"
     fso.close
    end if 
end if
  wscript.sleep 30*1000
 loop 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

稍微解释一下,无限循环并通过末尾的sleep实现定时访问准备好的接口。如果返回值是规定的字符串:yisinian,那么将返回值记录到文件aaa.ini中。 
如果返回值有误,打印一些运行出错之类的日志到文件log.ini中,并且运行指定绝对路径中的关闭tomcat的.bat文件,调用sendmail.bat发送邮件,再运行指定的绝对路径中的tomcat的.bat启动文件。此处注意,本文代码中做在关闭tomcat之后作了一个10s的延时,因为通常项目较大时,关闭tomcat时要等几秒才能整个关闭完成~ 
好了,整个过程就是这样的了。正常执行的时候同路径下会生成aaa.ini和log.ini日志文件 
当然,文件名和各种文件的绝对路径你都可以改掉。 
这里,我保存成为了main.vbs文件

4).附加一个小功能,就是当main.vbs正常启动之后,也许检测tomcat的工作一直在后台进行,想关掉怎么办?并没有可视化界面,此处同样提供一段可运行的脚本文件,运行该文件,即可关掉前面正在运行的main.vbs:

dim WSHshell
set WSHshell = wscript.createobject("wscript.shell")
WSHshell.run "taskkill /im wscript.exe /f",o,true
  • 1
  • 2
  • 3

保存成后缀为vbs文件即可。

5).附:要脚本文件和blat324对应配置包留邮箱哦~看到就回 
也可以发邮件到smile326@qq.com提醒我。 
程序猿何必为难程序猿(笑脸)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Linux 上检测 Tomcat 的心跳,可以通过以下步骤进行: 1. 首先,要保证你已经在 Linux 系统上安装了 Tomcat 服务器。 2. 打开终端(命令行窗口),登录到 Linux 服务器上。 3. 使用以下命令检查 Tomcat 服务器是否正在运行: ``` systemctl status tomcat ``` 如果输出显示 Tomcat 正在运行,则说明服务器已经启动。 4. 如果 Tomcat 未在运行,可以使用以下命令启动 Tomcat 服务器: ``` systemctl start tomcat ``` 5. 为了持续监测 Tomcat 的心跳,你可以使用以下命令来查看 Tomcat 是否处于运行状态: ``` systemctl is-active tomcat ``` 如果输出为 "active",则表示 Tomcat 正在运行。 6. 如果你希望定期检测 Tomcat 的心跳,可以创建一个脚本,并设置计划任务(cron job)来执行该脚本。脚本的内容可以是检查 Tomcat 运行状态的命令,如: ``` #!/bin/bash if [ "$(systemctl is-active tomcat)" = "active" ]; then echo "Tomcat is running." else echo "Tomcat is not running." fi ``` 你可以将脚本保存为一个文件,例如 "check_tomcat_status.sh"。 7. 使用以下命令编辑定期执行脚本的计划任务: ``` crontab -e ``` 在编辑器中,添加以下行来设置计划任务: ``` * * * * * /path/to/check_tomcat_status.sh >/dev/null 2>&1 ``` 上述命令将每分钟执行一次 "check_tomcat_status.sh" 脚本,并将输出重定向到 /dev/null,以避免生成不必要的日志。 通过以上步骤,你可以在 Linux 上检测 Tomcat 的心跳,并可以通过定期检测脚本来获取状态信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值