最近公司windows服務器剛作完Nginx+tomcat的負載均衡處理,下一步想實現對後臺服務軟件tomcat和nginx服務的監控。此處咱們想實現的不是對性能等各項指標的監控,而是服務可否正常訪問,若出現異常但願能重啓服務,重啓後最好能再向指定郵箱發一郵件(若該郵箱開通了來往郵件通知服務,則能夠實現實時短信通知了)。臨近年底不是特別忙,有些閒暇時間,計劃把本身實現該需求的過程記錄下來,給同行們一個參考。 html
本篇先對選擇的監控工具作下簡要介紹,後續會逐步實現其它需求。在選定使用的軟件前從網上查了很多資料像JMX等,也沒少嘗試使用相關軟件,但最終選定了第三方用戶編寫的一個監控工具——TomcatMoni(TOMCAT監控助手)。這款小軟件是從一個軟件站下載到的,下載地址:http://www.crsky.com/soft/26486.html nginx
或者去我上傳的地址下載了:http://download.csdn.net/detail/a443453087/8403203 windows
下載的軟件包名是TomcatMoni-v0.1beta.zip,解壓後以下圖: tomcat
其中有軟件的使用說明,每一個文件功能想必你們一看就明白了,下面對特殊功能點作下說明吧。 服務器
在conf.properties文件中有幾項配置,能夠配置定時訪問的地址,以及出現異常後啓動的命令。還能夠設置時訪問時間間隔,日誌保存等。各參數以下: 負載均衡
- ##############################################################################
- #監視服務器配置
- ##############################################################################
- #服務器一 測試地址
- url1 = http://localhost:8080/login.jsp
- #服務器一 啓動命令(能夠調用一個批處理,在這個批處理中,您寫上重啓的命令)
- exec1 = cmd.exe /c E:\\restartServer.bat
-
- #服務器二 測試地址
- #url2 =
- #服務器二 啓動命令
- #exec2 =
-
- #服務器三 測試地址
- #url3 =
- #服務器三 啓動命令
- #exec3 =
-
- ##############################################################################
- #其餘配置<span style="white-space:pre"> </span>
- ##############################################################################
- #時間間隔(單位分鐘)
- times = 1
-
-
- #日誌記錄地址
- log = log.txt
配置之比後能夠運行TomcatMoni.exe開始執行監控,能夠嘗試手動中止下服務,看它是否能監控到異常並執行指定命令。實際測試的結果該軟件最多能夠實現三路地址監控。之因此選擇這個軟件是由於它比較簡單易用,而且能夠在restartServer.bat中添加本身想要執行的命令,如:重啓系統服務,發郵件等。如:restartServer.bat文件中示例代碼所示,若想實現tomcat服務的中止與重啓功能須要把tomcat做爲服務來安裝才能夠 jsp
1、實現blat發送郵件 工具
下載blat能夠去官網:http://www.blat.net/ 固然你也能夠去網上百度下,也會有大把下載資源。 性能
下載以後解壓找到以下圖幾個文件,把它們放到C:\WINDOWS\system32下面,這樣作爲了方便經過命令行直接調用。 測試
放到指定路徑後打開一個命令行窗口,輸入blat會輸出以下信息,說明blat可使用了。
下面就使用blat來發郵件了,首先是一個批處理:
sendmail.bat:
- @echo off
- :::::::::::::: 參數設置::::::::::::::
- set from=test@163.com【發送方地址】
- set user=test【發送方帳號】
- set pass=testpwd【發送方密碼】
- set tf=mail_list.txt【收件人列表】
- set subj=這是郵件標題哈【郵件標題】
- set mail=mail_body.txt【郵件內容】
- set attach=c:\sendmail\fj.txt【郵件附件】
- set server=smtp.163.com【發送服務器】
- set debug=-debug -log blat.log -timestamp【日誌】
- ::::::::::::::: 執行blat :::::::::::::::
- blat %mail% -tf %tf% -base64 -charset UTF8 -subject %subj% -attach "%attach%" -server %
- server% -f %from% -u %user% -pw %pass% %debug%
mail_list.txt:
- 2831000205@qq.com
- 88888@qq.com
mail_body.txt:
- This email come from test@163.com,Congratulations!
fj.txt:
注意事項:一、使用的郵箱要支持smtp,像163默認是沒有開啓smtp的,須要去配置中開啓下。
二、發送方地址和發送方帳號注意區分開來,發送方帳號必定不要帶形如:「@163.com「的後綴,不然將報登陸失敗的錯誤。
三、上面的郵箱地址密碼都是我隨意寫的,實際使用時請使用正確的郵箱和密碼等信息。
完成以上信息的配置後雙擊sendmail.bat,若是沒有報出錯誤信息,那就能夠看下你的收件箱了,應該已收到剛纔發送的郵件了。
2、用VBS腳本發送郵件
如今經過blat發郵件是沒問題的,但測試時發現經過上文介紹的Tomcatmoni監控助手沒法調用sendmail.bat這個文件,調用後不能正常執行,但若是把這個bat文件換成其它命令就能夠正常執行。後來嘗試了很久仍是沒能實現經過TomcatMoni監控助手調用sendmail.bat正常發送郵件。但本身手動雙擊sendmail.bat確實能夠發送郵件。因而又找到了接下來要介紹的第二種發送郵件的方式,經過vbs腳原本發送,樣例以下:
sendmail.vbs
- NameSpace = "http://schemas.microsoft.com/cdo/configuration/"
- set Email = CreateObject("CDO.Message")
- Email.From = "sendtest@163.com" 【發送方地址】
- Email.To = "receive@163.com" 【接收方地址】
- Email.Subject = "這是郵件標題"【郵件標題】
- x="C:\TomcatMonitor\sendmail\mail_body.txt" 【郵件正文】
- y="C:\TomcatMonitor\sendmail\fj.txt"【附件】
- Set fso=CreateObject("Scripting.FileSystemObject")
- Set myfile=fso.OpenTextFile(x,1,Ture)
- c=myfile.readall
- myfile.Close
- Email.Textbody = c
- Email.AddAttachment y
- with Email.Configuration.Fields
- .Item(NameSpace&"sendusing") = 2
- .Item(NameSpace&"smtpserver") = "smtp.163.com"【郵件服務器地址】
- .Item(NameSpace&"smtpserverport") = 25
- .Item(NameSpace&"smtpauthenticate") = 1
- .Item(NameSpace&"sendusername") = "sendtest" 【發送方帳號】
- .Item(NameSpace&"sendpassword") = ""sendtestpwd" 【密碼】
- .Update
- end with
- Email.Send
- Set Email=Nothing
雙擊該vbs腳本能夠直接發送郵件,在批處理中調用的樣例以下:
restartServer.bat:
- @rem 這裏能夠寫您本身須要執行的命令
-
- @rem 重啓tomcat的命令
-
- @rem 發出郵件通知
- wscript C:\TomcatMonitor\sendmail\sendmail.vbs