经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Windows » 查看文章
windows服务器监控多个tomcat运行状态
来源:cnblogs  作者:tzzt01  时间:2019/6/12 11:43:47  对本文有异议

 第一步,修改tomcat默认的进程名

因为所有的tomcat项目的进程名默认都叫java.exe,所以需要修改tomcat容器bin目录下的setclasspath.bat。注释掉:(在set前加上:冒号就行)

set _RUNJAVA="%JRE_HOME%\bin\java.exe"

这句,改成

copy "%JAVA_HOME%\bin\java.exe" "%JAVA_HOME%\bin\xxxx.exe"
set _RUNJAVA="%JAVA_HOME%\bin\xxxx"

这样,重启tomcat项目,在 任务管理器 中就会看到更改后的进程名。

第二步,编写bat脚本

  1. @echo off
  2. rem setlocal是批处理本地化的一种操作,在执行setlocal之后所做的环境改动只限于批处理文件
  3. rem ENABLEDELAYEDEXPANSION 启用变量延迟,直到出现匹配的endlocal命令
  4. SETLOCAL ENABLEDELAYEDEXPANSION
  5. rem rem的意思是注释
  6. rem 链接
  7. set URL="http://xx.xx.xx.xx:808x/xxxx/xxxx.jsp"
  8. rem tomcat目录
  9. set TOMCAT_HOME="C:\xxxx-tomcat-8.5.31"
  10. rem 关闭tomcat命令的路径xxx.exe就是第一步中设置的进程名)
  11. set CLOSE_CMD=taskkill /f /t /im xxxx.exe
  12. rem 启动tomcat命令的路径
  13. set START_CMD=%TOMCAT_HOME%\bin\startup.bat
  14. rem tomcat缓存目录
  15. set TOMCAT_CACHE=%TOMCAT_HOME%\work
  16. rem 日志文件的路径
  17. set LOG_PATH=%TOMCAT_HOME%\logs\check.log
  18. rem 每次检测完后等待时间,再进行下一次检测,若将程序部署到系统计划任务,可忽略
  19. rem set TIME_WAIT=30
  20. rem echo string:将字符串显示在屏幕中
  21. rem :loop 和下面的goto组合成循环
  22. :loop
  23. rem 设置变量http状态码
  24. set httpcode=0
  25. rem 打开tomcat目录
  26. cd /d %TOMCAT_HOME%
  27. rem 打印时间
  28. echo %date% %time%
  29. rem 在屏幕上打印执行状态
  30. echo 'begin checking tomcat'
  31. rem 将记录保存在日志文件中
  32. echo %date% %time% >>%LOG_PATH%
  33. rem 循环
  34. rem FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令
  35. rem 其中参数有/d /l /r /f
  36. rem 参数 /d (参数只能显示当前目录下的目录名字)
  37. rem 参数 /R (搜索指定路径及所有子目录中与set相符合的所有文件)
  38. rem 参数 /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step)
  39. rem 参数 /F (使用文件解析来处理命令输出、字符串及文件内容。)
  40. rem (相关文件或命令)指定一个或一组文件。可以使用通配符
  41. for /l %%i in (1,1,10) do (
  42. echo %%i
  43. rem 借助工具获得项目的状态头(curl工具的安装会在下面提及)
  44. for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do (
  45. rem 将变量r的值赋值给httpcode
  46. set httpcode=%%r
  47. if !httpcode!==200 (
  48. GOTO :OUTFOR
  49. )
  50. )
  51. )
  52. :OUTFOR
  53. echo %httpcode% >>%LOG_PATH%
  54. if not %httpcode%==200 (
  55. call %NOTIFICATION_MESS%
  56. echo close tomcat >>%LOG_PATH%
  57. rem 关闭tomcat call在批处理中用于调用另一个批处理文件,start用于执行一些外部程序
  58. start %CLOSE_CMD%
  59. timeout -t 10 >nul
  60. rem 记录日志
  61. echo success to close tomcat >>%LOG_PATH%
  62. rem 清除tomcatwork空间 /s意思是不需要确认的删除 /Q是清除目录及子目录
  63. rd /S /Q %TOMCAT_CACHE%
  64. echo start tomcat >>%LOG_PATH%
  65. rem 开启tomcat,执行bat文件
  66. call %START_CMD%
  67. echo success to start tomcat
  68. echo success to start tomcat >>%LOG_PATH%
  69. ) else (
  70. echo the tomcat is running
  71. echo the tomcat is running>>%LOG_PATH%
  72. )
  73. timeout -t 3 >nul
  74. rem 若将脚本程序部署到系统计划程序中,将以下代码可注释
  75. rem timeout -t %TIME_WAIT% >nul
  76. rem goto loop

第三步,设置windows计划任务。

如何设置计划任务,可以自行百度。贴一个我设置的。

程序或脚本中,选择第二步创建的bat脚本。这样每隔5分钟,系统调用一次bat脚本,bat判断tomcat是否还在运行。如果10秒钟之后,访问bat中的url失败,tomcat项目将会自动启动。


 如果有多个tomcat需要此类操作,只需要将每个tomcat项目按照上面三步操作一遍,最终实现监控多个tomcat,避免项目自动关闭的问题。

 

原文链接:http://www.cnblogs.com/tzzt01/p/11003482.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号