基于组件化的监控平台开发监控Tomcat服务及邮件通知功能

前一阵因看到一位同事正在开发一个监控软件,就搭建了这组件化的监控平台 http://www.blogjava.net/xmatthew/articles/185673.html。
看到有很多朋友的支持,在些表示非常感谢。即然平台已经搭建完成,接下就让需要一起来完善这些真正在应用的组件开发,所以我利用业余时间,开发了一个Tomcat服务监控组件和一个邮件通知服务组件。

下载地址
二进制程序
第三方类库下载,第三方类库下载2 放到lib目录下。
api-docs 
源代码

先来介绍Tomcat服务监控组件的实现,该监控组件目前实现了以下方面信息的监控:
1. Jvm堆内存和非堆内存的监控(可以设置使用的百分比或是具体使用的内存大小)
2. 当前操作文件打开的IO文件个数监控。 一般操作默认设置的最大值是1024,如果超过这个服务会导致Tomcat所有服务的停止。
3. 数据库连接池的监控(可以设置使用的百分比或是具体使用的连接数大小)
4. Tomcat服务模块(Web Module)的运行状态的监控(监控其状态是否为运行状态)

监控的方式通过Jmx取得当前Tomcat的服务状态,需要tomcat开始jmx服务。
方法如下:在startup.sh命令行中(linux)加入以下命令
 export JAVA_OPTS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8060 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

windows下使用:
  set JAVA_OPTS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8060 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

下面我们来看一下该监控组件的实现类图



下面我们来操作一下如何使用Spring注册该组件(spy2servers.xml),使用其监控平台工作起来。

 1       < bean  class ="org.xmatthew.spy2servers.component.spy.jmx.TomcatJmxSpyComponent" >
 2          
 3           < property  name ="host"  value ="x.x.x.x" > property >
 4          
 5           < property  name ="port"  value ="8060" > property >
 6          
 7           < property  name ="detectInterval"  value ="5000" > property >
 8          
 9           < property  name ="heapMemorySpy" >  
10               < bean  class ="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy" >
11                  
12                   < property  name ="memoryUsedPercentToAlert"  value ="5" > property >
13                  
14                  
15                  
16                   < property  name ="alertAfterKeepTimeLive"  value ="10" > property >
17               bean >
18           property >
19           < property  name ="nonHeatMemorySpy" >
20               < bean  class ="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy" >
21                   < property  name ="memoryUsedToAlert"  value ="100" > property >
22                   < property  name ="alertAfterKeepTimeLive"  value ="10" > property >
23               bean >
24           property >
25           < property  name ="fileSpy" >
26               < bean  class ="org.xmatthew.spy2servers.component.spy.jmx.FileSpy" >
27                  
28                   < property  name ="filesOpenedPercentToAlert"  value ="90" > property >
29                  
30                  
31                  
32                   < property  name ="alertAfterKeepTimeLive"  value ="2" > property >
33               bean >
34           property >
35          
36           < property  name ="dataSourcesSpy" >
37               < bean  class ="org.xmatthew.spy2servers.component.spy.jmx.DataSourcesSpy" >
38                   < property  name ="dataSourceSpys" >
39                       < set >
40                           < bean  class ="org.xmatthew.spy2servers.component.spy.jmx.DataSourceSpy" >
41                              
42                               < property  name ="numActivePercentToAlert"  value ="90" > property >
43                              
44                              
45                               < property  name ="dataSourceName"  value ="jdbc/opendb" > property >
46                           bean >
47                       set >
48                   property >
49               bean >
50           property >     
51          
52           < property  name ="webModuleSpy" >
53               < bean  class ="org.xmatthew.spy2servers.component.spy.jmx.WebModuleSpy" >
54                   < property  name ="webModules" >  
55                       < set >
56                           < value > / value >
57                           < value > /jsp-examples value >
58                           < value > /servlets-examples value >
59                       set >
60                   property >
61               bean >
62           property >
63       bean >



这样该组件就可以工作,下面是如何配置邮件通知组件。该组对当简单一些
实现类图如下:



配置好需要通知的邮件列表和登录的邮件服务器就可以了

 1       < bean  class ="org.xmatthew.spy2servers.component.alert.EmailAlertComponent" >
 2           < property  name ="emails"  ref ="emails" />
 3           < property  name ="emailAccount" >
 4               < bean  class ="org.xmatthew.spy2servers.component.alert.EmailAccount" >
 5                   < property  name ="server"  value ="smtp.163.com" > property >
 6                   < property  name ="serverPort"  value ="25" > property >
 7                   < property  name ="loginName"  value ="ant_miracle" > property >
 8                   < property  name ="loginPwd"  value ="xxx" > property >
 9                   < property  name ="sender"  value ="[email protected]" > property >
10                   < property  name ="sendNick"  value ="EmailAlertComponent" > property >
11               bean >
12           property >
13       bean >
14 
15       < util:list  id ="emails" >
16           < value > [email protected] value >
17       util:list >


最后我们再配置一下通知服务的规则。
下面的规则表示,TomcatJmxSpyComponent(组件名)的消息都会调度到EmailAlertComponent(组件名)。

 1       < bean  id ="simpleAlertRule"  class ="org.xmatthew.spy2servers.rule.SimpleAlertRule" >
 2           < property  name ="channles" >
 3               < set >
 4                   < ref  bean ="channel1"   />
 5               set >
 6           property >
 7       bean >
 8      
 9       < bean  id ="channel1"  class ="org.xmatthew.spy2servers.rule.Channel" >
10           < property  name ="from" >
11               < set >
12                   < value > TomcatJmxSpyComponent value >
                  
13               set >
14           property >
15           < property  name ="to" >
16               < set >
17                   < value > EmailAlertComponent value >
18               set >
19           property >
20       bean >



好了,基本的配置最是这些,应用程序和源代码已经上传大家可以自写阅览。大家如有任何问题请回复给我。

Good luck!
Yours Matthew!

你可能感兴趣的:(NMS)