<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 156,  comments - 601,  trackbacks - 0

    最近看到一位同事正在開(kāi)發(fā)一個(gè)監(jiān)控軟件,要求就是通過(guò)針對(duì)服務(wù)器現(xiàn)有的一些接口,通過(guò)這些接口返回的數(shù)據(jù)進(jìn)行分析,如果監(jiān)控的值到達(dá)預(yù)先設(shè)定的范圍則通過(guò)短信的方式發(fā)送給管理員。

    從整個(gè)開(kāi)發(fā)的功能上來(lái)看是一個(gè)比較單一也很明確的功能,所開(kāi)發(fā)的系統(tǒng)對(duì)所其所監(jiān)控的軟件的依賴(lài)性也非常大,主要是監(jiān)控的數(shù)據(jù)分析行為和監(jiān)控信息的服務(wù)報(bào)警行為這塊。既然這兩塊很難做成一個(gè)通用的功能模塊,那就搭建一個(gè)監(jiān)控平臺(tái),可以讓這些功能模塊通過(guò)組件的方式自由的注冊(cè)和銷(xiāo)毀。

    所有我構(gòu)思了這個(gè)監(jiān)控平臺(tái),它對(duì)外有三個(gè)接口,分別是監(jiān)控接口,報(bào)警接口和監(jiān)控消息監(jiān)控接口。由平臺(tái)統(tǒng)一管理這些組件的生命周期,每個(gè)組件都過(guò)單獨(dú)的線程運(yùn)行。提供一個(gè)核心組件CoreComponent調(diào)度所有監(jiān)控?cái)?shù)據(jù)的流轉(zhuǎn)。平臺(tái)本身還使用基于jmx管理服務(wù)技術(shù)提供對(duì)所有當(dāng)前使用的組件運(yùn)行情況的監(jiān)控,也包括動(dòng)態(tài)的啟動(dòng)和停止組件的運(yùn)行狀態(tài)。

    下載地址 
    二進(jìn)制程序
    第三方類(lèi)庫(kù)下載,第三方類(lèi)庫(kù)下載2 放到lib目錄下。
    api-docs 
    源代碼

    下面是部分設(shè)計(jì)圖:

     

    AlertComponent設(shè)計(jì)圖



     

    SpyComponent設(shè)計(jì)圖:


    MessageAlertChannelActiveAwareComponent設(shè)計(jì)圖


    下面我利用該平臺(tái)開(kāi)發(fā)一個(gè)監(jiān)控ActiveMQ狀態(tài)的組件ActiveMQJmxSpyComponent,該組件實(shí)現(xiàn)對(duì)AMQ運(yùn)行狀態(tài)的監(jiān)控(監(jiān)聽(tīng)失敗或失敗后重新連接成功)??梢酝ㄟ^(guò)指定Queue名稱(chēng)列表來(lái)指定要監(jiān)控Queue隊(duì)列的消費(fèi)者是否為0(通常表示對(duì)方可能因?yàn)榫W(wǎng)絡(luò)或服務(wù)中斷而失去監(jiān)控)或是隊(duì)列消息都由0變?yōu)榇笥?表示消費(fèi)者重新監(jiān)聽(tīng)上服務(wù)。

     1public class ActiveMQJmxSpyComponent extends AbstractSpyComponent {   
     2    /**  
     3     * Logger for this class  
     4     */
      
     5    private static final Logger LOGGER = Logger.getLogger(ActiveMQJmxSpyComponent.class);   
     6    //AMQ jmx serverUrl to spy    
     7    private String serverUrl;   
     8    //detect interval(unit is ms)   
     9    private int detectInterval = 5000;   
    10    //the Queue name list to spy   
    11    private Set<String> destinationNamesToWatch;   
    12    // if queue's consumer suspends after then certain time then to notify. default is 3 minutes   
    13    private int queueSuspendNotifyTime = 3*60*1000;  


    下面是一個(gè)報(bào)警組件的實(shí)現(xiàn):只是簡(jiǎn)單的把監(jiān)控消息打印在屏幕上PrintScreenAlertComponent

     1public class PrintScreenAlertComponent extends AbstractAlertComponent {   
     2  
     3    /* (non-Javadoc)  
     4     * @see org.xmatthew.spy2servers.core.Component#getName()  
     5     */
      
     6    public String getName() {   
     7        return "PrintScreenAlertComponent";   
     8    }
       
     9  
    10    /* (non-Javadoc)  
    11     * @see org.xmatthew.spy2servers.core.Component#startup()  
    12     */
      
    13    public void startup() {   
    14        setStatusRun();   
    15  
    16    }
       
    17  
    18    /* (non-Javadoc)  
    19     * @see org.xmatthew.spy2servers.core.Component#stop()  
    20     */
      
    21    public void stop() {   
    22        setStatusStop();   
    23  
    24    }
       
    25  
    26    @Override  
    27    protected void onAlert(Message message) {   
    28        System.out.println(message);   
    29           
    30    }
       
    31  
    32}
      
    33


    下面該組件的注冊(cè)。${CUR_PATH}/conf/spy2servers.xml

     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    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
     7           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd   
     8           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">  
     9  
    10    <bean class="org.xmatthew.spy2servers.core.CoreComponent"></bean>  
    11    <bean class="org.xmatthew.spy2servers.jmx.JmxServiceComponent"></bean>  
    12       
    13    <bean class="org.xmatthew.spy2servers.component.alert.PrintScreenAlertComponent"></bean>  
    14       
    15    <bean class="org.xmatthew.spy2servers.component.spy.jmx.ActiveMQJmxSpyComponent">  
    16        <property name="serverUrl" value="service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"></property>  
    17        <property name="destinationNamesToWatch">  
    18          <set>  
    19            <value>Matthew.Queue</value>  
    20            <value>Rocket.Queue</value>  
    21          </set>             
    22        </property>  
    23        <property name="queueSuspendNotifyTime" value="50000"></property>  
    24    </bean>  
    25       
    26</beans>  
    27


    ok,現(xiàn)在ActiveMQJmxSpyComponent監(jiān)控到的消息能會(huì)被PrintScreenAlertComponent打印到屏幕上。
    現(xiàn)在啟動(dòng)程序,我們看到ActiveMQJmxSpyComponent和PrintScreenAlertComponent組件已經(jīng)啟動(dòng)了。


    使用Jconsole進(jìn)行監(jiān)控





    如果此時(shí)需要建立一個(gè)消息報(bào)警的規(guī)則,只要實(shí)現(xiàn)以下接口,并注入到CoreComponent的alertRule屬性中即可。

    1public interface AlertRule {   
    2  
    3    boolean isAlertAllow(MessageAlertChannel channel);   
    4}
      

    應(yīng)用這個(gè)平臺(tái)開(kāi)發(fā)監(jiān)控的組件就這么簡(jiǎn)單。

     備注:因?yàn)殚_(kāi)發(fā)時(shí)間比較緊,如果有什么Bug也希望大家反饋給我,我會(huì)改進(jìn)。

    下載地址 
    二進(jìn)制程序
    第三方類(lèi)庫(kù)下載  第三方類(lèi)庫(kù)下載2  放到lib目錄下。
    api-docs 
    源代碼

     Good luck!

    Yours Matthew!

     

    posted on 2008-03-12 13:41 x.matthew 閱讀(2198) 評(píng)論(7)  編輯  收藏

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲中文字幕无码久久精品1| 亚洲色成人网站WWW永久| 亚洲欧洲国产精品香蕉网| 亚洲av乱码一区二区三区香蕉| 国产精品国产亚洲区艳妇糸列短篇 | 亚洲人xxx日本人18| 一级一级一片免费高清| 2021久久精品免费观看| 精品亚洲成α人无码成α在线观看| 亚洲明星合成图综合区在线| 黄页网站在线视频免费| 精品免费久久久久久久| 国产av无码专区亚洲av果冻传媒| 亚洲国产品综合人成综合网站| 巨胸喷奶水视频www免费视频| 免费av欧美国产在钱| 久久精品国产亚洲综合色| 亚洲aⅴ天堂av天堂无码麻豆| 久久不见久久见免费视频7| 深夜国产福利99亚洲视频| 亚洲丰满熟女一区二区v| 老司机免费午夜精品视频| 67194熟妇在线永久免费观看 | 亚洲精品理论电影在线观看| 无码国产精品一区二区免费vr| 又色又污又黄无遮挡的免费视 | 好看的亚洲黄色经典| WWW亚洲色大成网络.COM| 国产91免费视频| 亚洲av无码一区二区三区不卡| 国产成人亚洲毛片| 永久免费av无码网站韩国毛片| 亚洲第一成年男人的天堂| 国产精品偷伦视频免费观看了| 国产精品视频免费一区二区三区| 亚洲日韩中文字幕| 999任你躁在线精品免费不卡| AV在线播放日韩亚洲欧| 国产精品亚洲精品日韩电影| 成年女人看片免费视频播放器| 亚洲最新黄色网址|