`
diy8187
  • 浏览: 76334 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

基于组件化的监控平台开发监控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),使用其监控平台工作起来。

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1<beanclass="org.xmatthew.spy2servers.component.spy.jmx.TomcatJmxSpyComponent">
2<!--监控的Jmx服务IP-->
3<propertyname="host"value="x.x.x.x"></property>
4<!--监控的Jmx服务端口-->
5<propertyname="port"value="8060"></property>
6<!--监控时间间隔单秒是毫秒-->
7<propertyname="detectInterval"value="5000"></property>
8
9<propertyname="heapMemorySpy"><!--堆内存监控方案-->
10<beanclass="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy">
11<!--设置临界值内存使用的百分比使用的内存值/最大内存值。注如果该值设置,memoryUsedToAlert自动失效-->
12<propertyname="memoryUsedPercentToAlert"value="5"></property>
13<!--设置临界值内存超过一定值后触发单位Mb-->
14<!--<propertyname="memoryUsedToAlert"value="100"></property>-->
15<!--设置临界值保持多久后,开始报警单位秒。注该值没有默认值,如果不认置则不会触发报警操作-->
16<propertyname="alertAfterKeepTimeLive"value="10"></property>
17</bean>
18</property>
19<propertyname="nonHeatMemorySpy"><!--非堆内存监控方案-->
20<beanclass="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy">
21<propertyname="memoryUsedToAlert"value="100"></property>
22<propertyname="alertAfterKeepTimeLive"value="10"></property>
23</bean>
24</property>
25<propertyname="fileSpy">
26<beanclass="org.xmatthew.spy2servers.component.spy.jmx.FileSpy">
27<!--设置临界值文件打开数百分比开始的文件数/最大的文件数。注如果该值设置,filesOpenedToAlert自动失效-->
28<propertyname="filesOpenedPercentToAlert"value="90"></property>
29<!--设置临界值文件打开数-->
30<!--<propertyname="filesOpenedToAlert"value="1000"></property>-->
31<!--设置临界值保持多久后,开始报警单位秒。注该值没有默认值,如果不认置则不会触发报警操作-->
32<propertyname="alertAfterKeepTimeLive"value="2"></property>
33</bean>
34</property>
35
36<propertyname="dataSourcesSpy"><!--文件IO打开数监控方案-->
37<beanclass="org.xmatthew.spy2servers.component.spy.jmx.DataSourcesSpy">
38<propertyname="dataSourceSpys">
39<set>
40<beanclass="org.xmatthew.spy2servers.component.spy.jmx.DataSourceSpy">
41<!--设置临界值连接池连接数占用比例使用的连接数/最大的连接数。注如果该值设置,numActiveToAlert自动失效-->
42<propertyname="numActivePercentToAlert"value="90"></property>
43<!--设置临界值连接池连目前使用的连接数-->
44<!--<propertyname="numActiveToAlert"value="20"></property>-->
45<propertyname="dataSourceName"value="jdbc/opendb"></property>
46</bean>
47</set>
48</property>
49</bean>
50</property>
51
52<propertyname="webModuleSpy"><!--WebModule监控方案-->
53<beanclass="org.xmatthew.spy2servers.component.spy.jmx.WebModuleSpy">
54<propertyname="webModules"><!--监控的webmodule列表,如果模块状态为stop或undeploy则会报触发报警-->
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>



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



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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1<beanclass="org.xmatthew.spy2servers.component.alert.EmailAlertComponent">
2<propertyname="emails"ref="emails"/>
3<propertyname="emailAccount">
4<beanclass="org.xmatthew.spy2servers.component.alert.EmailAccount">
5<propertyname="server"value="smtp.163.com"></property>
6<propertyname="serverPort"value="25"></property>
7<propertyname="loginName"value="ant_miracle"></property>
8<propertyname="loginPwd"value="xxx"></property>
9<propertyname="sender"value="ant_miracle@163.com"></property>
10<propertyname="sendNick"value="EmailAlertComponent"></property>
11</bean>
12</property>
13</bean>
14
15<util:listid="emails">
16<value>ant_miracle@163.com</value>
17</util:list>


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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1<beanid="simpleAlertRule"class="org.xmatthew.spy2servers.rule.SimpleAlertRule">
2<propertyname="channles">
3<set>
4<refbean="channel1"/>
5</set>
6</property>
7</bean>
8
9<beanid="channel1"class="org.xmatthew.spy2servers.rule.Channel">
10<propertyname="from">
11<set>
12<value>TomcatJmxSpyComponent</value>
<!-- more components -->
13</set>
14</property>
15<propertyname="to">
16<set>
17<value>EmailAlertComponent</value>
18</set>
19</property>
20</bean>



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

Good luck!
Yours Matthew!

分享到:
评论

相关推荐

    SmartVM远程视频监控系统

    大有与传统硬盘录像机(DVR)平分秋色之象,能有一种方案能将以上各类设备集中在一起应用,软件的服务器能集录像、流媒体服务、及相关报警服务于一体,用网络应用的方式实现传统的DVR相关功能,而超过嵌入式DVR的...

    基于ssm+Vue的包头市交通管理局路况查询系统(源码+部署说明+系统介绍+数据库).zip

    其中,Spring负责IOC容器管理和AOP切面编程,SpringMVC负责Web层的开发,MyBatis则用于持久化层的开发。同时,该系统还使用了Vue.js作为前端框架,实现了前后端分离的开发模式。 在功能方面,该系统提供了路况查询...

    Joffice2.1操作手册

    J.Office办公协同开发平台是基于J2EE开源、轻量级的企业业务开发平台,基于代码重用、组件重用、业务逻辑重用、组装重用,提供了丰富的扩展前端、后端组件以及代码生成器,方便开发人员进行二次扩展开发,以满足企业...

    Java网上书店管理系统(基于MVC模式编写:前端jsp页面、数据库MySQL、服务器Tomcat).zip

    MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用...

    腾讯开源的分布式毫秒服务引擎 msec.zip

    10年的海量服务开发运营经验和教训使得我们深刻的认识到:要尽早规范团队的开发服务框架,避免到了后期,各种开发语言混杂、各类存储组件充斥、重复编码、每个模块形态不统一、文档缺失、监控瘫痪、人员离职造成大量...

    基于ZigBee+ESP32+MQTT+EMQX+TomCat+Servlet接口+MySQL+安卓app的物联网课设.zip

    MySQL拥有庞大的开发者社区和丰富的第三方插件、库、中间件支持,提供了丰富的文档、教程、论坛以及专业服务,极大地简化了开发、运维和故障排查过程。 关键组件与日志 系统数据库 MySQL内部包含几个特殊的系统...

    java开源包1

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包11

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包2

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包3

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包6

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包5

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包10

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包4

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包8

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包7

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包9

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    java开源包101

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    Java资源包01

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

Global site tag (gtag.js) - Google Analytics