最近公司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