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

 第一步,修改tomcat默認的進程名

由於全部的tomcat項目的進程名默認都叫java.exe,因此須要修改tomcat容器bin目錄下的setclasspath.bat。註釋掉:(在set前加上:冒號就行)java

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

這句,改爲緩存

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

這樣,重啓tomcat項目,在 任務管理器 中就會看到更改後的進程名。curl

第二步,編寫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計劃任務。

如何設置計劃任務,能夠自行百度。貼一個我設置的。jsp

程序或腳本中,選擇第二步建立的bat腳本。這樣每隔5分鐘,系統調用一次bat腳本,bat判斷tomcat是否還在運行。若是10秒鐘以後,訪問bat中的url失敗,tomcat項目將會自動啓動。工具


 若是有多個tomcat須要此類操做,只須要將每一個tomcat項目按照上面三步操做一遍,最終實現監控多個tomcat,避免項目自動關閉的問題。oop

相關文章
相關標籤/搜索