最近公司windows服务器刚做完Nginx+tomcat的负载均衡处理,下一步想实现对后台服务软件tomcat和nginx服务的监控。此处我们想实现的不是对性能等各项指标的监控,而是服务能否正常访问,若出现异常希望能重启服务,重启后最好能再向指定邮箱发一邮件(若该邮箱开通了来往邮件通知服务,则可以实现实时短信通知了)。临近年末不是特别忙,有些闲暇时间,计划把自己实现该需求的过程记录下来,给同行们一个参考。
本篇先对选择的监控工具做下简要介绍,后续会逐步实现其它需求。在选定使用的软件前从网上查了不少资料像JMX等,也没少尝试使用相关软件,但最终选定了第三方用户编写的一个监控工具——TomcatMoni(TOMCAT监控助手)。这款小软件是从一个软件站下载到的,下载地址:http://www.crsky.com/soft/26486.html
或者去我上传的地址下载了:http://download.csdn.net/detail/a443453087/8403203
下载的软件包名是TomcatMoni-v0.1beta.zip,解压后如下图:
其中有软件的使用说明,每个文件功能想必大家一看就明白了,下面对特殊功能点做下说明吧。
在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作为服务来安装才可以
一、实现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:
注意事项:1、使用的邮箱要支持smtp,像163默认是没有开启smtp的,需要去配置中开启下。
2、发送方地址和发送方账号注意区分开来,发送方账号一定不要带形如:“@163.com“的后缀,否则将报登录失败的错误。
3、上面的邮箱地址密码都是我随意写的,实际使用时请使用正确的邮箱和密码等信息。
完成以上信息的配置后双击sendmail.bat,如果没有报出错误信息,那就可以看下你的收件箱了,应该已收到刚才发送的邮件了。
二、用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
-
(责任编辑:IT) |