zoukankan      html  css  js  c++  java
  • windows服务器监控多个tomcat运行状态

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

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

    set _RUNJAVA="%JRE_HOME%injava.exe"

    这句,改成

    copy "%JAVA_HOME%injava.exe" "%JAVA_HOME%inxxxx.exe"
    set _RUNJAVA="%JAVA_HOME%inxxxx"

    这样,重启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%instartup.bat
    rem tomcat缓存目录  
    set TOMCAT_CACHE=%TOMCAT_HOME%work
    rem 日志文件的路径  
    set LOG_PATH=%TOMCAT_HOME%logscheck.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,避免项目自动关闭的问题。

  • 相关阅读:
    编码和字符集
    【机器学习】模型泛化
    asp.net GridView控件的列属性
    asp.net截取指定长度的字符串内容
    asp.net 对数据库表增加,删除,编辑更新修改
    asp.net 链接数据库ADO.NET
    常用正则表达式 验证电子邮件网址邮政编码等
    ASP.NET获取文件的相关知识
    C#获取picturebox图片路径
    C# dataGridView根据数据调整列宽
  • 原文地址:https://www.cnblogs.com/tzzt01/p/11003482.html
Copyright © 2011-2022 走看看