前一阵开发这个
基于组件化的监控平台收到的一些朋友的关注,在此表示感谢。也抱歉有一段时间没有及时更新了。
此次更新,主要是针对xml配置文件的简化,很多朋友表示Spring的xml的配置比较麻烦。其实Spring开发团队在这方面也是有考虑到的,
提供了一些方法可以让用户去编写xsd文件简单配置。这点我们是可以看到Spring开发团队的努力,现在Spring2.0以及2.5在配置上面也是
简化了很多如事务的配置,Aop配置以及utils工具类的配置等。
源代码下载:
二进制程序
第三方类库下载,
第三方类库下载2 放到lib目录下。
api-docs
源代码
关于想学习或使用过关于如何实现Spring的配置的朋友们,可以留言给我,一起进行交流学习。这部分的学习文档也是整理得不够。
言归正转,下面我们先来看一下原来的配置文档,基于普通的Spring 2.0
beans schema
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xmlns:util="http://www.springframework.org/schema/util"
7 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
8 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
9 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
10 http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
11
12 <bean class="org.xmatthew.spy2servers.core.CoreComponent">
13 <property name="alertRule" ref="simpleAlertRule"></property>
14 </bean>
15 <bean class="org.xmatthew.spy2servers.jmx.JmxServiceComponent"></bean>
16
17 <bean id="simpleAlertRule" class="org.xmatthew.spy2servers.rule.SimpleAlertRule">
18 <property name="channles">
19 <set>
20 <ref bean="channel1" />
21 </set>
22 </property>
23 </bean>
24
25 <bean id="channel1" class="org.xmatthew.spy2servers.rule.Channel">
26 <property name="from">
27 <set>
28 <value>TomcatJmxSpyComponent</value>
29 </set>
30 </property>
31 <property name="to">
32 <set>
33 <!--<value>PrintScreenAlertComponent</value>-->
34 <value>EmailAlertComponent</value>
35 </set>
36 </property>
37 </bean>
38
39 <bean class="org.xmatthew.spy2servers.component.alert.PrintScreenAlertComponent"></bean>
40
41 <bean class="org.xmatthew.spy2servers.component.spy.jmx.ActiveMQJmxSpyComponent">
42 <property name="host" value="x.x.x.x"></property>
43 <property name="port" value="1099"></property>
44
45 <property name="heapMemorySpy">
46 <bean class="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy">
47 <property name="memoryUsedPercentToAlert" value="5"></property>
48 <property name="alertAfterKeepTimeLive" value="10"></property>
49 </bean>
50 </property>
51 <property name="fileSpy">
52 <bean class="org.xmatthew.spy2servers.component.spy.jmx.FileSpy">
53 <property name="filesOpenedPercentToAlert" value="8"></property>
54 <property name="alertAfterKeepTimeLive" value="2"></property>
55 </bean>
56 </property>
57 <property name="queueSuspendNotifyTime" value="2000"></property>
58 </bean>
59
60 <bean class="org.xmatthew.spy2servers.component.spy.jmx.TomcatJmxSpyComponent">
61 <!-- 监控的Jmx服务IP -->
62 <property name="host" value="x.x.x.x"></property>
63 <!-- 监控的Jmx服务端口 -->
64 <property name="port" value="8060"></property>
65 <!-- 监控时间间隔 单秒是 毫秒 -->
66 <property name="detectInterval" value="5000"></property>
67
68 <property name="heapMemorySpy"> <!-- 堆内存 监控方案 -->
69 <bean class="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy">
70 <!-- 设置临界值 内存使用的百分比 使用的内存值 / 最大内存值。 注如果该值设置, memoryUsedToAlert自动失效-->
71 <property name="memoryUsedPercentToAlert" value="5"></property>
72 <!-- 设置临界值 内存超过一定值后触发 单位 Mb -->
73 <!-- <property name="memoryUsedToAlert" value="100"></property> -->
74 <!-- 设置临界值保持多久后,开始报警 单位秒。 注该值没有默认值,如果不认置则不会触发报警操作 -->
75 <property name="alertAfterKeepTimeLive" value="10"></property>
76 </bean>
77 </property>
78 <property name="nonHeatMemorySpy"><!-- 非堆内存 监控方案 -->
79 <bean class="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy">
80 <property name="memoryUsedToAlert" value="100"></property>
81 <property name="alertAfterKeepTimeLive" value="10"></property>
82 </bean>
83 </property>
84 <property name="fileSpy">
85 <bean class="org.xmatthew.spy2servers.component.spy.jmx.FileSpy">
86 <!-- 设置临界值 文件打开数百分比 开始的文件数 / 最大的文件数。 注如果该值设置, filesOpenedToAlert自动失效 -->
87 <property name="filesOpenedPercentToAlert" value="90"></property>
88 <!-- 设置临界值 文件打开数 -->
89 <!-- <property name="filesOpenedToAlert" value="1000"></property> -->
90 <!-- 设置临界值保持多久后,开始报警 单位秒。 注该值没有默认值,如果不认置则不会触发报警操作 -->
91 <property name="alertAfterKeepTimeLive" value="2"></property>
92 </bean>
93 </property>
94
95 <property name="dataSourcesSpy"><!-- 文件IO打开数 监控方案 -->
96 <bean class="org.xmatthew.spy2servers.component.spy.jmx.DataSourcesSpy">
97 <property name="dataSourceSpys">
98 <set>
99 <bean class="org.xmatthew.spy2servers.component.spy.jmx.DataSourceSpy">
100 <!-- 设置临界值 连接池连接数占用比例 使用的连接数 / 最大的连接数。 注如果该值设置, numActiveToAlert自动失效 -->
101 <property name="numActivePercentToAlert" value="90"></property>
102 <!-- 设置临界值 连接池连目前使用的连接数 -->
103 <!-- <property name="numActiveToAlert" value="20"></property> -->
104 <property name="dataSourceName" value="jdbc/opendb"></property>
105 </bean>
106 </set>
107 </property>
108 </bean>
109 </property>
110
111 <property name="webModuleSpy"><!-- Web Module 监控方案 -->
112 <bean class="org.xmatthew.spy2servers.component.spy.jmx.WebModuleSpy">
113 <property name="webModules"> <!-- 监控的web module列表,如果模块状态为stop或undeploy则会报触发报警 -->
114 <set>
115 <value>/</value>
116 <value>/jsp-examples</value>
117 <value>/servlets-examples</value>
118 </set>
119 </property>
120 </bean>
121 </property>
122 </bean>
123
124
125 <bean class="org.xmatthew.spy2servers.component.alert.EmailAlertComponent">
126 <property name="emails" ref="emails"/>
127 <property name="emailAccount">
128 <bean class="org.xmatthew.spy2servers.component.alert.EmailAccount">
129 <property name="server" value="smtp.163.com"></property>
130 <property name="serverPort" value="25"></property>
131 <property name="loginName" value="ant_miracle"></property>
132 <property name="loginPwd" value="xxxx"></property>
133 <property name="sender" value="ant_miracle@163.com"></property>
134 <property name="sendNick" value="EmailAlertComponent"></property>
135 </bean>
136 </property>
137 </bean>
138
139 <util:list id="emails">
140 <value>ant_miracle@163.com</value>
141 </util:list>
142
143 <!--
144 <bean class="org.xmatthew.spy2servers.component.spy.jmx.SunJVMJmxSpyComponent">
145 <property name="host" value="x.x.x.x"></property>
146 <property name="port" value="8060"></property>
147
148 <property name="heapMemorySpy">
149 <bean class="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy">
150 <property name="memoryUsedPercentToAlert" value="5"></property>
151 <property name="alertAfterKeepTimeLive" value="10"></property>
152 </bean>
153 </property>
154
155 <property name="fileSpy">
156 <bean class="org.xmatthew.spy2servers.component.spy.jmx.FileSpy">
157 <property name="filesOpenedPercentToAlert" value="8"></property>
158 <property name="alertAfterKeepTimeLive" value="2"></property>
159 </bean>
160 </property>
161 </bean>
162 -->
163 </beans>
164
是感觉很麻烦,下面我们看一下简化后的配置文档,功能与上面对应。
需要注意的是,现在我们使用的bean schema是xmlns="http://www.xmatthew.org/spy2servers/schema"
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans:beans xmlns="http://www.xmatthew.org/spy2servers/schema"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:beans="http://www.springframework.org/schema/beans"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xmlns:util="http://www.springframework.org/schema/util"
7 xsi:schemaLocation="http://www.springframework.org/schema/beans
8 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
9 http://www.xmatthew.org/spy2servers/schema
10 http://www.xmatthew.org/spy2servers/schema/spy2servers-1.0.xsd
11 http://www.springframework.org/schema/context
12 http://www.springframework.org/schema/context/spring-context-2.0.xsd">
13
14 <core-component>
15 <simple-alertRule>
16 <channel>
17 <from value="ActiveMQJmxSpyComponent"/>
18 <from value="SunJVMJmxSpyComponent"/>
19 <from value="TomcatJmxSpyComponent"/>
20 <to value="PrintScreenAlertComponent"/>
21 <!-- <to value="EmailAlertComponent" /> -->
22 </channel>
23 <!--
24 define more here
25 <channel>
26 </channel>
27 -->
28 </simple-alertRule>
29 </core-component>
30
31 <jmxService-component />
32
33 <beans:bean class="org.xmatthew.spy2servers.component.alert.PrintScreenAlertComponent"></beans:bean>
34
35 <activeMQJmxSpy host="127.0.0.1" port="1099" queueSuspendNotifyTime="2000" >
36 <heapMemorySpy memoryUsedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
37 <noneHeapMemorySpy memoryUsedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
38 <fileSpy filesOpenedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
39 <destinationNamesToWatch>
40 <queue value="Test.Queue" />
41 <queue value="aaa" />
42 </destinationNamesToWatch>
43 <llegalIps>
44 <ip value="127.0.0.1" />
45 <ip value="192.168.0.1" />
46 </llegalIps>
47 </activeMQJmxSpy>
48
49 <tomcatJmxSpy host="127.0.0.1" port="8060">
50 <dataSourcesSpy>
51 <dataSourceSpy numActivePercentToAlert="90" dataSourceName="jdbc/opendb" />
52 </dataSourcesSpy>
53 <webModuleSpy>
54 <module value="/" />
55 <module value="/jsp-examples" />
56 </webModuleSpy>
57 </tomcatJmxSpy>
58
59 <emailAlert>
60 <emails>
61 <email value="ant_miracle@163.com" />
62 </emails>
63 <emailAccount server="smtp.163.com" serverPort="25" loginName="xxxx"
64 loginPwd="xxxx" sender="ant_miracle@163.com" sendNick="EmailAlertComponent"/>
65 </emailAlert>
66
67
68 </beans:beans>
69
是不是简化的很多吧,配置起来也不这么麻烦了。
最后欢迎大家如果有问题和意见,给我留言。
Good Luck!
Yours Matthew!
posted on 2008-04-21 08:14
x.matthew 阅读(1913)
评论(4) 编辑 收藏 所属分类:
Spy2Servers