http://www.aygfsteel.com/xmatthew/archive/2008/04/24/194894.html
http://www.aygfsteel.com/xmatthew/archive/2008/04/21/194349.html
http://www.aygfsteel.com/xmatthew/archive/2008/03/24/187934.html
http://www.aygfsteel.com/xmatthew/articles/185673.html
現(xiàn)在應(yīng)該是時(shí)候把它們統(tǒng)一整理出來(lái)了。
本手冊(cè)分為兩部分,用戶使用手冊(cè)和開(kāi)發(fā)手冊(cè)。
首先看怎樣配置和運(yùn)行spy2servers.
1. 下載
下載地址:
二進(jìn)制程序
第三方類庫(kù)下載,第三方類庫(kù)下載2 Jetty類庫(kù) 放到lib目錄下。
api-docs
源代碼
下載 二進(jìn)制程序,第三方類庫(kù)下載,第三方類庫(kù)下載2, Jetty類庫(kù)。(因?yàn)樯蟼鞯奈募谛∮邢拗疲韵螺d稍麻煩了點(diǎn)

下載后,把二進(jìn)程序解壓出來(lái),再把第三方類庫(kù)解壓出來(lái),放到lib目錄下
用戶使用手冊(cè)部分
接下來(lái)配置spy2servers.xml文件 假如我們要配置一個(gè)acitvemq監(jiān)控組件,一個(gè)tomcat監(jiān)控組件,一個(gè)郵件報(bào)警通知組件和一個(gè)屏幕
報(bào)警輸出組件。
下面是具體的配置文件(加注釋)
<core-component> <!-- 配置核心組件,這個(gè)必須要有 -->
<simple-alertRule> <!-- 配置 消息報(bào)警規(guī)則-->
<channel> <!-- 從 ActiveMQJmxSpyComponent和TomcatJmxSpyComponent監(jiān)控組件的消息都會(huì)流轉(zhuǎn)到 PrintScreenAlertComponent-->
<from value="ActiveMQJmxSpyComponent"/>
<from value="TomcatJmxSpyComponent"/>
<to value="PrintScreenAlertComponent"/>
</channel>
<channel><!-- 從 TomcatJmxSpyComponent監(jiān)控組件的消息都會(huì)流轉(zhuǎn)到 EmailAlertComponent-->
<from value="TomcatJmxSpyComponent"/>
<to value="EmailAlertComponent" />
</channel>
</simple-alertRule>
</core-component>
<jmxService-component /> <!-- 開(kāi)啟jmx監(jiān)控服務(wù),其IP通過(guò) java啟動(dòng)命令設(shè)置 默認(rèn)為1616 -->
<!-- 定義 PrintScreenAlertComponent組件-->
<beans:bean class="org.xmatthew.spy2servers.component.alert.PrintScreenAlertComponent">
<beans:property name="name" value="PrintScreenAlertComponent"></beans:property>
</beans:bean>
<!--
host 監(jiān)控的Jmx服務(wù)IP port監(jiān)控的Jmx服務(wù)端口 detectInterval監(jiān)控時(shí)間間隔 單秒是 毫秒 默認(rèn)值為5000
queueSuspendNotifyTime 消息隊(duì)列沒(méi)有消息都監(jiān)控的時(shí)候,超過(guò)這個(gè)時(shí)間開(kāi)始報(bào)警
name 組件名稱,會(huì)被<simple-alertRule>使用
-->
<activeMQJmxSpy host="127.0.0.1" port="1099" queueSuspendNotifyTime="2000" name="ActiveMQJmxSpyComponent">
<!-- 堆內(nèi)存 監(jiān)控方案 -->
<!-- memoryUsedPercentToAlert 設(shè)置臨界值 內(nèi)存使用的百分比 使用的內(nèi)存值 / 最大內(nèi)存值。 注如果該值設(shè)置, memoryUsedToAlert自動(dòng)失效-->
<!-- alertAfterKeepTimeLive 設(shè)置臨界值保持多久后,開(kāi)始報(bào)警 單位秒。 注該值沒(méi)有默認(rèn)值,如果不認(rèn)置則不會(huì)觸發(fā)報(bào)警操作 -->
<heapMemorySpy memoryUsedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
<!-- 非堆內(nèi)存 監(jiān)控方案 說(shuō)明同上-->
<noneHeapMemorySpy memoryUsedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
<!-- filesOpenedPercentToAlert 設(shè)置臨界值 文件打開(kāi)數(shù)百分比 開(kāi)始的文件數(shù) / 最大的文件數(shù)。 注如果該值設(shè)置, filesOpenedToAlert自動(dòng)失效 -->
<!-- alertAfterKeepTimeLive 設(shè)置臨界值保持多久后,開(kāi)始報(bào)警 單位秒。 注該值沒(méi)有默認(rèn)值,如果不認(rèn)置則不會(huì)觸發(fā)報(bào)警操作 -->
<fileSpy filesOpenedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
<destinationNamesToWatch> <!-- 監(jiān)控的消息隊(duì)列,如果為空,表示監(jiān)控當(dāng)前的所有隊(duì)列 -->
<queue value="Test.Queue" />
<queue value="aaa" />
</destinationNamesToWatch>
<llegalIps> <!-- 監(jiān)控的連接的合法IP,如果為空,表示放棄監(jiān)控 -->
<ip value="127.0.0.1" />
<ip value="192.168.0.1" />
</llegalIps>
</activeMQJmxSpy>
<tomcatJmxSpy host="127.0.0.1" port="8060">
<dataSourcesSpy> <!-- 數(shù)據(jù)源監(jiān)控方案 可以設(shè)置多個(gè)-->
<!-- numActivePercentToAlert 設(shè)置臨界值 連接池連接數(shù)占用比例 使用的連接數(shù) / 最大的連接數(shù)。 注如果該值設(shè)置, numActiveToAlert自動(dòng)失效 -->
<!-- dataSourceName 監(jiān)控的數(shù)據(jù)連接名稱 -->
<dataSourceSpy numActivePercentToAlert="90" dataSourceName="jdbc/opendb" />
</dataSourcesSpy>
<webModuleSpy> <!-- Web Module 監(jiān)控方案 -->
<!-- 監(jiān)控的web module列表,如果模塊狀態(tài)為stop或undeploy則會(huì)報(bào)觸發(fā)報(bào)警 -->
<module value="/" />
<module value="/jsp-examples" />
</webModuleSpy>
</tomcatJmxSpy>
<emailAlert>
<emails> <!-- 配置郵件通知列表 允許設(shè)置多個(gè)-->
<email value="ant_miracle@163.com" />
</emails> <!-- 設(shè)置郵件服務(wù)器配置信息 -->
<emailAccount server="smtp.163.com" serverPort="25" loginName="xxxx"
loginPwd="xxxx" sender="ant_miracle@163.com" sendNick="EmailAlertComponent"/>
</emailAlert>
<jetty> <!-- 配置內(nèi)置服務(wù)器 -->
<connectors>
<nioConnector port="7758" /> <!-- using nio connector port is 7758 -->
</connectors>
<handlers>
<!-- 配置內(nèi)置基于web 方式的平臺(tái)組件監(jiān)控 servlet context為 /admin -->
<servlet servletClass="org.xmatthew.spy2servers.component.web.ComponentsViewServlet" path="/admin" />
</handlers>
</jetty>
<simple-alertRule> <!-- 配置 消息報(bào)警規(guī)則-->
<channel> <!-- 從 ActiveMQJmxSpyComponent和TomcatJmxSpyComponent監(jiān)控組件的消息都會(huì)流轉(zhuǎn)到 PrintScreenAlertComponent-->
<from value="ActiveMQJmxSpyComponent"/>
<from value="TomcatJmxSpyComponent"/>
<to value="PrintScreenAlertComponent"/>
</channel>
<channel><!-- 從 TomcatJmxSpyComponent監(jiān)控組件的消息都會(huì)流轉(zhuǎn)到 EmailAlertComponent-->
<from value="TomcatJmxSpyComponent"/>
<to value="EmailAlertComponent" />
</channel>
</simple-alertRule>
</core-component>
<jmxService-component /> <!-- 開(kāi)啟jmx監(jiān)控服務(wù),其IP通過(guò) java啟動(dòng)命令設(shè)置 默認(rèn)為1616 -->
<!-- 定義 PrintScreenAlertComponent組件-->
<beans:bean class="org.xmatthew.spy2servers.component.alert.PrintScreenAlertComponent">
<beans:property name="name" value="PrintScreenAlertComponent"></beans:property>
</beans:bean>
<!--
host 監(jiān)控的Jmx服務(wù)IP port監(jiān)控的Jmx服務(wù)端口 detectInterval監(jiān)控時(shí)間間隔 單秒是 毫秒 默認(rèn)值為5000
queueSuspendNotifyTime 消息隊(duì)列沒(méi)有消息都監(jiān)控的時(shí)候,超過(guò)這個(gè)時(shí)間開(kāi)始報(bào)警
name 組件名稱,會(huì)被<simple-alertRule>使用
-->
<activeMQJmxSpy host="127.0.0.1" port="1099" queueSuspendNotifyTime="2000" name="ActiveMQJmxSpyComponent">
<!-- 堆內(nèi)存 監(jiān)控方案 -->
<!-- memoryUsedPercentToAlert 設(shè)置臨界值 內(nèi)存使用的百分比 使用的內(nèi)存值 / 最大內(nèi)存值。 注如果該值設(shè)置, memoryUsedToAlert自動(dòng)失效-->
<!-- alertAfterKeepTimeLive 設(shè)置臨界值保持多久后,開(kāi)始報(bào)警 單位秒。 注該值沒(méi)有默認(rèn)值,如果不認(rèn)置則不會(huì)觸發(fā)報(bào)警操作 -->
<heapMemorySpy memoryUsedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
<!-- 非堆內(nèi)存 監(jiān)控方案 說(shuō)明同上-->
<noneHeapMemorySpy memoryUsedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
<!-- filesOpenedPercentToAlert 設(shè)置臨界值 文件打開(kāi)數(shù)百分比 開(kāi)始的文件數(shù) / 最大的文件數(shù)。 注如果該值設(shè)置, filesOpenedToAlert自動(dòng)失效 -->
<!-- alertAfterKeepTimeLive 設(shè)置臨界值保持多久后,開(kāi)始報(bào)警 單位秒。 注該值沒(méi)有默認(rèn)值,如果不認(rèn)置則不會(huì)觸發(fā)報(bào)警操作 -->
<fileSpy filesOpenedPercentToAlert="90" alertAfterKeepTimeLive="10"/>
<destinationNamesToWatch> <!-- 監(jiān)控的消息隊(duì)列,如果為空,表示監(jiān)控當(dāng)前的所有隊(duì)列 -->
<queue value="Test.Queue" />
<queue value="aaa" />
</destinationNamesToWatch>
<llegalIps> <!-- 監(jiān)控的連接的合法IP,如果為空,表示放棄監(jiān)控 -->
<ip value="127.0.0.1" />
<ip value="192.168.0.1" />
</llegalIps>
</activeMQJmxSpy>
<tomcatJmxSpy host="127.0.0.1" port="8060">
<dataSourcesSpy> <!-- 數(shù)據(jù)源監(jiān)控方案 可以設(shè)置多個(gè)-->
<!-- numActivePercentToAlert 設(shè)置臨界值 連接池連接數(shù)占用比例 使用的連接數(shù) / 最大的連接數(shù)。 注如果該值設(shè)置, numActiveToAlert自動(dòng)失效 -->
<!-- dataSourceName 監(jiān)控的數(shù)據(jù)連接名稱 -->
<dataSourceSpy numActivePercentToAlert="90" dataSourceName="jdbc/opendb" />
</dataSourcesSpy>
<webModuleSpy> <!-- Web Module 監(jiān)控方案 -->
<!-- 監(jiān)控的web module列表,如果模塊狀態(tài)為stop或undeploy則會(huì)報(bào)觸發(fā)報(bào)警 -->
<module value="/" />
<module value="/jsp-examples" />
</webModuleSpy>
</tomcatJmxSpy>
<emailAlert>
<emails> <!-- 配置郵件通知列表 允許設(shè)置多個(gè)-->
<email value="ant_miracle@163.com" />
</emails> <!-- 設(shè)置郵件服務(wù)器配置信息 -->
<emailAccount server="smtp.163.com" serverPort="25" loginName="xxxx"
loginPwd="xxxx" sender="ant_miracle@163.com" sendNick="EmailAlertComponent"/>
</emailAlert>
<jetty> <!-- 配置內(nèi)置服務(wù)器 -->
<connectors>
<nioConnector port="7758" /> <!-- using nio connector port is 7758 -->
</connectors>
<handlers>
<!-- 配置內(nèi)置基于web 方式的平臺(tái)組件監(jiān)控 servlet context為 /admin -->
<servlet servletClass="org.xmatthew.spy2servers.component.web.ComponentsViewServlet" path="/admin" />
</handlers>
</jetty>
配置完成后,運(yùn)行 spy2servers/bin目錄。如果是windows平臺(tái),運(yùn)行 start.bat,如果linux平臺(tái)運(yùn)行 start.sh
啟動(dòng)后,顯示如下:
INFO Main - Server starting
INFO log - Logging to org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
INFO CoreComponent - plug component CoreComponent
INFO CoreComponent - plug component JmxServiceComponent
INFO CoreComponent - plug component PrintScreenAlertComponent
INFO CoreComponent - plug component ActiveMQJmxSpyComponent
INFO CoreComponent - plug component TomcatJmxSpyComponent
INFO CoreComponent - plug component EmailAlertComponent
INFO log - jetty-6.1.4
INFO log - Started SelectChannelConnector@0.0.0.0:7758
INFO NetShutdownHandlerCommand - Listening on port 8858

INFO log - Logging to org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
INFO CoreComponent - plug component CoreComponent
INFO CoreComponent - plug component JmxServiceComponent
INFO CoreComponent - plug component PrintScreenAlertComponent
INFO CoreComponent - plug component ActiveMQJmxSpyComponent
INFO CoreComponent - plug component TomcatJmxSpyComponent
INFO CoreComponent - plug component EmailAlertComponent
INFO log - jetty-6.1.4
INFO log - Started SelectChannelConnector@0.0.0.0:7758
INFO NetShutdownHandlerCommand - Listening on port 8858
表示已經(jīng)spy2servers已經(jīng)啟動(dòng)成功
下面,我們可通過(guò) jmx和web來(lái)查看運(yùn)行情況
Jmx顯示如下:
web顯示界面
開(kāi)發(fā)手冊(cè)
開(kāi)發(fā)手冊(cè)已經(jīng)更新,手冊(cè)查看地址
Good Luck!
Yours Mathtew!
2008年4月24日