功能包括對服務器的ping,http,socket 三種方式的檢查,如服務器出現異常可通過短信,email 等方式報警通知。
這樣服務器異常就可以及時發現
考慮到擴展,配置方便使用了Spring
參數配置都在applicationContext.xml中,詳細見下:
<?xml?version="1.0"?encoding="GBK"?>
<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"
????????"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

??????<!--警報接受人列表/////////////////////////////////////////////////////////////////////////////////////-->
????<bean?id="alarm-phoneList-gateway"?class="com.monitor.obj.AlarmPhoneList">
????????<!--服務器負責人手機號碼組-->
????????<property?name="serviceid">
????????????<value>TEST0001</value>
????????</property>
????????<property?name="srctermid">
????????????<value>13500000000</value>
????????</property>
????????<property?name="desttermid">
????????????<list>
????????????????<value>13666666666</value>\\劉工
??????????????????<value>13655555555</value>\\王工
????????????</list>
????????</property>
????</bean>
????<bean?id="alarm-phoneList-web"?class="com.monitor.obj.AlarmPhoneList">
????????<!--網站負責人手機號碼組-->
????????<property?name="serviceid">
????????????<value>TEST0002</value>
????????</property>
????????<property?name="srctermid">
????????????<value>13500000000</value>
????????</property>
????????<property?name="desttermid">
????????????<list>
????????????????<value>13655555555</value>
????????????</list>
????????</property>
????</bean>
????<!--警報組件///////////////////////////////////////////////////////////////////////////////////////////////-->
????<bean?id="alarm-sms"?class="com.monitor.services.SmsAlarm">
????????<!--短信方式通知-->
????????<property?name="alarmUrl">
????????????<value>http://www.test.com/alarm?fromphone=#srctermid#&phone=#desttermid#&serviceid=#serviceid#&message=#msg#&fromserver=alarm</value>
????????</property>
????????<property?name="alarmStr">
????????????<value>#server#出現異常</value>
????????</property>
????????<property?name="alarmphoneList">
????????????<ref?bean="alarm-phoneList-gateway"/><!--警報接受人列表-->
????????</property>
????</bean>
????<bean?id="alarm-mail"?class="com.monitor.services.MailAlarm">
????????<!--郵件方式通知-->
????????<property?name="alarmMailAddr">
????????????<list>
????????????????<value>js@567.com</value><!--警報接受人列表-->
????????????</list>
????????</property>
????????<property?name="alarmStr">
????????????<value>#server#出現異常</value>
????????</property>
????????<property?name="send">
????????????<ref?bean="sendmail"/>
????????</property>
????????<property?name="mailTitle">
????????????<value>服務器異常</value>
????????</property>
????</bean>
????<!--監聽類型組件////////////////////////////////////////////////////////////////////////////////////////-->
????<bean?id="httpModule"?class="com.monitor.services.HttpModule">
????????<property?name="interval">
????????????<value>300</value>??<!--檢測時間間隔,單位:秒-->
????????</property>
????????<property?name="alarm_on_errors">
????????????<value>3</value>??<!--異常連續次數達到這個數目開始報警-->
????????</property>
????????<property?name="alarm">
????????????<ref?bean="alarm-sms"/>?<!--警報組件-->
????????</property>
????????<property?name="urlList">
????????????<list>????<!--監聽地址-->
????????????????<value>http://www.sohu.com/test.txt</value>
????????????????<value>http://www.163.com</value>
????????????</list>
????????</property>
????</bean>
????<bean?id="pingModule"?class="com.monitor.services.PingModule">
????????<property?name="interval">
????????????<value>300</value>??<!--檢測時間間隔,單位:秒-->
????????</property>
????????<property?name="alarm_on_errors">
????????????<value>3</value>??<!--異常連續次數達到這個數目開始報警-->
????????</property>
????????<property?name="alarm">
????????????<ref?bean="alarm-sms"/>?<!--警報組件-->
????????</property>
????????<property?name="ipList">
????????????<list>????<!--監聽地址-->
????????????????<value>192.0.0.1</value>
????????????????<value>192.151.107.2</value>
????????????</list>
????????</property>
????</bean>
????<bean?id="socketModule"?class="com.monitor.services.SocketModule">
????????<property?name="interval">
????????????<value>300</value>??<!--檢測時間間隔,單位:秒-->
????????</property>
????????<property?name="alarm_on_errors">
????????????<value>3</value>??<!--異常連續次數達到這個數目開始報警-->
????????</property>
????????<property?name="alarm">
????????????<ref?bean="alarm-sms"/>?<!--警報組件-->
????????</property>
????????<property?name="ipList">
????????????<list>????<!--監聽地址-->
????????????????<value>192.168.0.8:8800</value>
????????????????<value>192.168.5.3:1433</value>
????????????</list>
????????</property>
????</bean>
????<!--監聽服務///////////////////////////////////////////////////////////////////////////////////////////////-->
????<!--*--><bean?id="serverMonitor"?class="com.monitor.services.ServerMonitor">
????<!--*-->????<constructor-arg>
????<!--*-->????????<list>
????<!--*-->????????????<ref?bean="httpModule"/>?<!--監聽類型組件-->
????<!--*-->????????????<ref?bean="pingModule"/>
????<!--*-->????????????<ref?bean="socketModule"/>
????<!--*-->????????</list>
????<!--*-->????</constructor-arg>
????<!--*--></bean>
????<!--///////////////////////////////////////////////////////////////////////////////////////////////////////////-->
????<bean?id="sender"?class="org.springframework.mail.javamail.JavaMailSenderImpl">
????????<property?name="host">
????????????<value>smtp.163.com</value>
????????</property>
????????<property?name="username">
????????????<value>admin@163.com</value>
????????</property>
????????<property?name="password">
????????????<value>123456</value>
????????</property>
????????<property?name="javaMailProperties">
????????????<props>
????????????????<prop?key="mail.smtp.auth">true</prop>
????????????</props>
????????</property>
????</bean>

????<bean?id="sendmail"?class="com.monitor.services.MailSender">
????????<property?name="sender">
????????????<ref?bean="sender"/>
????????</property>
????????<property?name="encode">
????????????<value>GBK</value>
????????</property>
????????<property?name="html">
????????????<value>true</value>
????????</property>
????????<property?name="from">
????????????<value>admin@163.com</value>
????????</property>
????</bean>
??
</beans>
監聽方式還可以增加其他方式,只需要照現有代碼編寫一個配置上即可(繼承Runnable)。調用如下:
ServerMonitor.java

?private?void?startMonitor()
{
????????Iterator?iterator?=?monitorModule.iterator();

????????while?(iterator.hasNext())?
{
????????????new?Thread((Runnable)?iterator.next()).start();
????????}
????}
通知方式繼承BaseAlarm接口即可編寫新的通知方式。
程序需要在 JDK 1.5以上運行
源碼下載地址:http://www.migti.com/download.ww
這樣服務器異常就可以及時發現
考慮到擴展,配置方便使用了Spring
參數配置都在applicationContext.xml中,詳細見下:

































































































































































監聽方式還可以增加其他方式,只需要照現有代碼編寫一個配置上即可(繼承Runnable)。調用如下:
ServerMonitor.java










通知方式繼承BaseAlarm接口即可編寫新的通知方式。
程序需要在 JDK 1.5以上運行
源碼下載地址:http://www.migti.com/download.ww