windows服務器監控多個tomcat運行狀態


 第一步,修改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,避免項目自動關閉的問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM