TOMCAT监控助手 实现监控tomcat发送邮件功能

为什么80%的码农都做不了架构师?>>>   hot3.png

   最近公司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,解压后如下图:

TOMCAT监控助手 实现监控tomcat发送邮件功能_第1张图片

其中有软件的使用说明,每个文件功能想必大家一看就明白了,下面对特殊功能点做下说明吧。

在conf.properties文件中有几项配置,可以配置定时访问的地址,以及出现异常后启动的命令。还可以设置时访问时间间隔,日志保存等。各参数如下:

[html]  view plain copy 在CODE上查看代码片
  1. ##############################################################################  
  2. #监视服务器配置  
  3. ##############################################################################  
  4. #服务器一 测试地址  
  5. url1 = http://localhost:8080/login.jsp  
  6. #服务器一 启动命令(可以调用一个批处理,在这个批处理中,您写上重启的命令)  
  7. exec1 = cmd.exe /c E:\\restartServer.bat  
  8.   
  9. #服务器二 测试地址  
  10. #url2 =   
  11. #服务器二 启动命令  
  12. #exec2 =   
  13.   
  14. #服务器三 测试地址  
  15. #url3 =   
  16. #服务器三 启动命令  
  17. #exec3 =   
  18.   
  19. ##############################################################################  
  20. #其他配置<span style="white-space:pre">       span>  
  21. ##############################################################################  
  22. #时间间隔(单位分钟)  
  23. times = 1  
  24.   
  25.   
  26. #日志记录地址  
  27. log = log.txt  

配置之比后可以运行TomcatMoni.exe开始执行监控,可以尝试手动停止下服务,看它是否能监控到异常并执行指定命令。实际测试的结果该软件最多可以实现三路地址监控。之所以选择这个软件是因为它比较简单易用,并且可以在restartServer.bat中添加自己想要执行的命令,如:重启系统服务,发邮件等。如:restartServer.bat文件中示例代码所示,若想实现tomcat服务的停止与重启功能需要把tomcat作为服务来安装才可以


一、实现blat发送邮件

下载blat可以去官网:http://www.blat.net/  当然你也可以去网上百度下,也会有大把下载资源。

下载之后解压找到如下图几个文件,把它们放到C:\WINDOWS\system32下面,这样做为了方便通过命令行直接调用。

TOMCAT监控助手 实现监控tomcat发送邮件功能_第2张图片

放到指定路径后打开一个命令行窗口,输入blat会输出如下信息,说明blat可以使用了。

TOMCAT监控助手 实现监控tomcat发送邮件功能_第3张图片

下面就使用blat来发邮件了,首先是一个批处理:

sendmail.bat:

[html]  view plain copy 在CODE上查看代码片
  1. @echo off  
  2. :::::::::::::: 参数设置::::::::::::::  
  3. set from=test@163.com【发送方地址】  
  4. set user=test【发送方账号】  
  5. set pass=testpwd【发送方密码】  
  6. set tf=mail_list.txt【收件人列表】  
  7. set subj=这是邮件标题哈【邮件标题】  
  8. set mail=mail_body.txt【邮件内容】  
  9. set attach=c:\sendmail\fj.txt【邮件附件】  
  10. set server=smtp.163.com【发送服务器】  
  11. set debug=-debug -log blat.log -timestamp【日志】  
  12. ::::::::::::::: 执行blat :::::::::::::::  
  13. blat %mail% -tf %tf% -base64 -charset UTF8 -subject %subj% -attach "%attach%" -server %  
  14. server% -f %from% -u %user% -pw %pass% %debug%  
mail_list.txt:

[html]  view plain copy 在CODE上查看代码片
  1. [email protected]  
  2. [email protected]  

mail_body.txt:

[html]  view plain copy 在CODE上查看代码片
  1. This email come from [email protected],Congratulations!  


fj.txt:
[html]  view plain copy 在CODE上查看代码片
  1. i am fj!  测试中文  


注意事项:1、使用的邮箱要支持smtp,像163默认是没有开启smtp的,需要去配置中开启下。

2、发送方地址和发送方账号注意区分开来,发送方账号一定不要带形如:“@163.com“的后缀,否则将报登录失败的错误。

3、上面的邮箱地址密码都是我随意写的,实际使用时请使用正确的邮箱和密码等信息。


完成以上信息的配置后双击sendmail.bat,如果没有报出错误信息,那就可以看下你的收件箱了,应该已收到刚才发送的邮件了。

二、用VBS脚本发送邮件

现在通过blat发邮件是没问题的,但测试时发现通过上文介绍的Tomcatmoni监控助手无法调用sendmail.bat这个文件,调用后不能正常执行,但如果把这个bat文件换成其它命令就可以正常执行。后来尝试了好久还是没能实现通过TomcatMoni监控助手调用sendmail.bat正常发送邮件。但自己手动双击sendmail.bat确实可以发送邮件。于是又找到了接下来要介绍的第二种发送邮件的方式,通过vbs脚本来发送,样例如下:

sendmail.vbs

[html]  view plain copy 在CODE上查看代码片
  1. NameSpace = "http://schemas.microsoft.com/cdo/configuration/"  
  2. set Email = CreateObject("CDO.Message")  
  3. Email.From = "[email protected]" 【发送方地址】  
  4. Email.To = "[email protected]" 【接收方地址】  
  5. Email.Subject = "这是邮件标题"【邮件标题】  
  6. x="C:\TomcatMonitor\sendmail\mail_body.txt" 【邮件正文】  
  7. y="C:\TomcatMonitor\sendmail\fj.txt"【附件】  
  8. Set fso=CreateObject("Scripting.FileSystemObject")  
  9. Set myfile=fso.OpenTextFile(x,1,Ture)  
  10. c=myfile.readall  
  11. myfile.Close  
  12. Email.Textbody = c  
  13. Email.AddAttachment y  
  14. with Email.Configuration.Fields  
  15. .Item(NameSpace&"sendusing") = 2  
  16. .Item(NameSpace&"smtpserver") = "smtp.163.com"【邮件服务器地址】  
  17. .Item(NameSpace&"smtpserverport") = 25  
  18. .Item(NameSpace&"smtpauthenticate") = 1  
  19. .Item(NameSpace&"sendusername") = "sendtest" 【发送方账号】  
  20. .Item(NameSpace&"sendpassword") = ""sendtestpwd" 【密码】  
  21. .Update  
  22. end with  
  23. Email.Send  
  24. Set Email=Nothing  


双击该vbs脚本可以直接发送邮件,在批处理中调用的样例如下:

restartServer.bat:

[html]  view plain copy 在CODE上查看代码片
  1. @rem 这里可以写您自己需要执行的命令  
  2.   
  3. @rem 重启tomcat的命令  
  4.   
  5. @rem 发出邮件通知  
  6. wscript C:\TomcatMonitor\sendmail\sendmail.vbs  

转载于:https://my.oschina.net/liting/blog/388009

你可能感兴趣的:(TOMCAT监控助手 实现监控tomcat发送邮件功能)