windows服务器监控多个tomcat运行状态
程序员文章站
2024-03-30 19:38:57
第一步,修改tomcat默认的进程名 因为所有的tomcat项目的进程名默认都叫java.exe,所以需要修改tomcat容器bin目录下的setclasspath.bat。注释掉:(在set前加上:冒号就行) set _RUNJAVA="%JRE_HOME%\bin\java.exe" 这句,改成 ......
第一步,修改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脚本
@echo off rem setlocal是批处理本地化的一种操作,在执行setlocal之后所做的环境改动只限于批处理文件 rem enabledelayedexpansion 启用变量延迟,直到出现匹配的endlocal命令 setlocal enabledelayedexpansion rem rem的意思是注释 rem 链接 set url="http://xx.xx.xx.xx:808x/xxxx/xxxx.jsp" rem tomcat目录 set tomcat_home="c:\xxxx-tomcat-8.5.31" rem 关闭tomcat命令的路径(xxx.exe就是第一步中设置的进程名) set close_cmd=taskkill /f /t /im xxxx.exe rem 启动tomcat命令的路径 set start_cmd=%tomcat_home%\bin\startup.bat rem tomcat缓存目录 set tomcat_cache=%tomcat_home%\work rem 日志文件的路径 set log_path=%tomcat_home%\logs\check.log rem 每次检测完后等待时间,再进行下一次检测,若将程序部署到系统计划任务,可忽略 rem set time_wait=30 rem echo string:将字符串显示在屏幕中 rem :loop 和下面的goto组合成循环 :loop rem 设置变量http状态码 set httpcode=0 rem 打开tomcat目录 cd /d %tomcat_home% rem 打印时间 echo %date% %time% rem 在屏幕上打印执行状态 echo 'begin checking tomcat' rem 将记录保存在日志文件中 echo %date% %time% >>%log_path% rem 循环 rem for [参数] %%变量名 in (相关文件或命令) do 执行的命令 rem 其中参数有/d /l /r /f rem 参数 /d (参数只能显示当前目录下的目录名字) rem 参数 /r (搜索指定路径及所有子目录中与set相符合的所有文件) rem 参数 /l (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 step) rem 参数 /f (使用文件解析来处理命令输出、字符串及文件内容。) rem (相关文件或命令)指定一个或一组文件。可以使用通配符 for /l %%i in (1,1,10) do ( echo %%i rem 借助工具获得项目的状态头(curl工具的安装会在下面提及) for /f "delims=" %%r in ('curl -sl -w "%%{http_code}" %url% -o /dev/null') do ( rem 将变量r的值赋值给httpcode set httpcode=%%r if !httpcode!==200 ( goto :outfor ) ) ) :outfor echo %httpcode% >>%log_path% if not %httpcode%==200 ( call %notification_mess% echo close tomcat >>%log_path% rem 关闭tomcat call在批处理中用于调用另一个批处理文件,start用于执行一些外部程序 start %close_cmd% timeout -t 10 >nul rem 记录日志 echo success to close tomcat >>%log_path% rem 清除tomcatwork空间 /s意思是不需要确认的删除 /q是清除目录及子目录 rd /s /q %tomcat_cache% echo start tomcat >>%log_path% rem 开启tomcat,执行bat文件 call %start_cmd% echo success to start tomcat echo success to start tomcat >>%log_path% ) else ( echo the tomcat is running echo the tomcat is running>>%log_path% ) timeout -t 3 >nul rem 若将脚本程序部署到系统计划程序中,将以下代码可注释 rem timeout -t %time_wait% >nul rem goto loop
第三步,设置windows计划任务。
如何设置计划任务,可以自行百度。贴一个我设置的。
程序或脚本中,选择第二步创建的bat脚本。这样每隔5分钟,系统调用一次bat脚本,bat判断tomcat是否还在运行。如果10秒钟之后,访问bat中的url失败,tomcat项目将会自动启动。
如果有多个tomcat需要此类操作,只需要将每个tomcat项目按照上面三步操作一遍,最终实现监控多个tomcat,避免项目自动关闭的问题。
推荐阅读
-
windows服务器监控多个tomcat运行状态
-
Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享
-
使用apachetop实时监控日志、动态分析服务器运行状态
-
nginx+Tomcat在同一台服务器上部署运行多个网站
-
使用 Prometheus + Grafana + Exporter 监控服务器的运行状态
-
Grafana+Prometheus+Exporter +cAdvisor监控服务器和docker运行状态(一)
-
TICK技术栈:利用Telegraf+InfluxDB+Grafana监控服务器运行状态
-
Nagios监控服务器运行状态
-
同一台服务器(电脑)运行多个Tomcat的设置方法步骤
-
使用apachetop实时监控日志、动态分析服务器运行状态