`
diy8187
  • 浏览: 79970 次
  • 性别: 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!

分享到:
评论

相关推荐

    tomcat运行状态监控(可自动重启windows脚本).zip

    通过"监控tomcat.bat"脚本结合"curl.exe"工具,可以实时检查Tomcat的运行状态,并在出现问题时自动恢复服务。"功能截图.png"和"使用说明.txt"则帮助用户理解如何使用和定制这套系统,以满足不同环境和需求。在运维...

    Zabbix监控tomcat所需模板

    Zabbix是一款广泛应用的开源监控工具,能够对各种IT资源进行精细化监控。本篇将详细介绍如何使用Zabbix监控Tomcat,并解析提供的模板文件。 标题中的“Zabbix监控tomcat所需模板”指的是使用Zabbix来监控Tomcat应用...

    tomcat 实时监控工具

    Lambda Probe是一款强大的、开源的Tomcat实时监控工具,它提供了丰富的功能来管理和监控Tomcat服务器上的应用程序和数据源。在了解Lambda Probe之前,我们先来简单回顾一下Tomcat。Tomcat是Apache软件基金会的...

    tomcat监控脚本

    为了确保应用服务器(如Tomcat)能够持续提供服务,常常需要实施自动化监控机制来实时监测其运行状态,并在发生故障时进行自动恢复。本文将详细介绍一个用于监控并自动重启Tomcat服务的Shell脚本。 #### 二、脚本...

    基于java的开发源码-应用服务器 Tomcat.zip

    本资料主要围绕基于Java的开发源码,深入剖析Tomcat的工作原理、配置与优化。 Tomcat是由Apache软件基金会的Jakarta项目维护的开源软件,它主要支持Java Servlet和JavaServer Pages(JSP)技术。Tomcat的设计目标是...

    Zabbix运维监控平台项目解决方案.docx

    Zabbix能够24小时不间断地监控网站,确保在出现故障时,如服务器CPU负载过高、磁盘空间告急、内存使用超标、系统进程过多或关键服务如Tomcat宕机等情况时,通过邮件、微信、电话、短信等多种报警方式进行即时通知,...

    tomcat源码基于6.0

    通过深入研究其源码,我们可以对Tomcat的内部工作机制有更深刻的理解,这对于优化应用性能、解决技术问题或进行定制化开发具有重大意义。 一、Tomcat架构概述 Tomcat的核心架构主要由以下几个部分组成: 1. **...

    jmx监控weblogic,tomcat,websphere源码

    Java管理扩展(JMX)是Java平台提供的一种标准机制,用于管理和监视应用程序、服务和设备。在本项目中,"jmx监控weblogic,tomcat,websphere源码"涉及了使用JMX来监控三个主流的Java应用服务器:WebLogic、Tomcat和...

    pinpoint安装部署、监控tomcat、weblogic、webSphere手册

    5. **Pinpoint Web UI 安装**:同样在 Tomcat 上部署 pinpoint-web.war 文件,以提供可视化的监控界面。 #### 四、Pinpoint 部署与监控示例 1. **部署 Collector 和 WebUI**:在 Tomcat 中部署 pinpoint-collector...

    apache Tomcat web服务器

    Apache Tomcat是一款开源的、基于Java的Web应用服务器,它主要负责执行Java Servlet和JavaServer Pages(JSP)技术。Apache Tomcat是Apache软件基金会Jakarta项目的一部分,它以其高效、稳定和易于管理的特性而备受...

    用LambdaProbe监控Tomcat

    标题“用LambdaProbe监控Tomcat”指的是在Java Web开发中,使用LambdaProbe工具来对Tomcat应用服务器进行实时性能监控的技术。LambdaProbe是一款强大的、基于Web的开源监控工具,适用于包括Tomcat在内的多种Java应用...

    tomcat服务器工作原理

    Tomcat提供了JNDI(Java Naming and Directory Interface)服务,允许在应用中查找和绑定资源,如数据源、邮件会话等。 7. **安全配置** 通过`conf/server.xml`和`conf/context.xml`,Tomcat可以设置用户认证、...

    Tomcat 服务器7.0版本

    Tomcat 7.0还引入了新的管理工具,如Manager应用和Host Manager应用,它们允许管理员通过Web界面来管理和监控Tomcat实例上的应用。这些工具提供了部署、卸载、重新加载和查看应用状态等功能。 总的来说,Apache ...

    Tomcat与JavaWeb开发技术详解

    4.1 JNDI(Java Naming and Directory Interface):Tomcat支持JNDI服务,可用于查找和绑定资源,如数据源、邮件服务器等。 4.2 WebSocket:Tomcat7及以上版本支持WebSocket协议,实现双向通信,常用于实时聊天、...

    基于J2EE架构的敏捷开发平台.pdf

    【基于J2EE架构的敏捷开发平台】是一个旨在解决传统软件开发中问题的高效开发解决方案。传统的开发方式通常采用大棒集成,即在项目后期进行系统集成,这可能导致集成周期长,集成过程中发现的缺陷多。敏捷开发方法则...

    开源 tomcat 性能查看工具

    开源的Tomcat性能查看工具提供了强大的功能,帮助管理员实时了解Tomcat的运行状态,及时发现并解决潜在问题,保证服务的稳定性和效率。本文将详细介绍这种工具的主要特点和使用方法,以及与之相关的技术知识点。 ...

    Tomcat与Java.Web开发技术详解

    当Tomcat启动时,它会加载配置文件并初始化各个组件。对于Web应用,Tomcat会加载部署在服务器上的Web应用程序,然后监听指定端口上的请求。当有请求到达时,连接器会解析请求,并将解析后的信息传递给容器处理。容器...

    Tomcat与Java.Web开发技术详解源代码

    4. JMX:提供管理和监控工具,用于监控Tomcat的状态和性能。 当一个HTTP请求到达Tomcat时,它会经过以下步骤: 1. 请求到达Coyote HTTP/1.1 Connector,该组件将请求转化为内部格式。 2. 请求被传递给Catalina容器...

    Java Web应用开发--J2EE和Tomcat第2版

    《Java Web应用开发--J2EE和Tomcat第2版》这一书名及描述明确指出其主要内容聚焦于Java Web应用程序的开发,特别是基于J2EE(Java 2 Platform, Enterprise Edition)和Tomcat服务器的环境。J2EE是Sun Microsystems...

    JBPM5基于tomcat web的应用

    总之,基于Tomcat的JBPM5 Web应用提供了便捷的流程管理功能,开发者可以通过Web界面创建、编辑和监控业务流程。了解JBPM5的核心特性和Tomcat的部署配置是成功运行此项目的前提。对于初学者来说,这是一个很好的实践...

Global site tag (gtag.js) - Google Analytics