posts - 156,  comments - 601,  trackbacks - 0
最近看到一位同事正在开发一个监控软件,要求就是通过针对服务器现有的一些接口,通过这些接口返回的数据进行分析,如果监控的值到达预先设定的范围则通过短信的方式发送给管理员。

从整个开发的功能上来看是一个比较单一也很明确的功能,所开发的系统对所其所监控的软件的依赖性也非常大,主要是监控的数据分析行为和监控信息的服务报警行为这块。既然这两块很难做成一个通用的功能模块,那就搭建一个监控平台,可以让这些功能模块通过组件的方式自由的注册和销毁。


所有我构思了这个监控平台,它对外有三个接口,分别是监控接口,报警接口和监控消息监控接口。由平台统一管理这些组件的生命周期,每个组件都过单独的线程运行。提供一个核心组件CoreComponent调度所有监控数据的流转。平台本身还使用基于jmx管理服务技术提供对所有当前使用的组件运行情况的监控,也包括动态的启动和停止组件的运行状态。
 
下载地址 
二进制程序
第三方类库下载,第三方类库下载放到lib目录下。
api-docs 
源代码


/**
 * Component interface.
 * 组件接口,提供组件的基本管理服务和状态监控。 所有组件必须要实现该接口。
 * 
 * 
@author XieMaLin
 *
 
*/

public interface Component {
    
    
/**
     * component run status
     * 
     
*/

    
public final static int ST_RUN = 1;
    
    
/**
     * component run status name
     
*/

    
public final static String ST_RUN_NAME = "Active";
    
    
/**
     * component stop status
     
*/

    
public final static int ST_STOP = 2;
    
    
/**
     * component stop status name
     
*/

    
public final static String ST_STOP_NAME = "Decctive";
    
    
/**
     * get component status
     * <p>
     * One of ST_RUN, ST_STOP. 
     * 
@return component status
     
*/

    
public int getStatus();
    
    
/**
     * get component status
     * <p>
     * One of ST_RUN_NAME, ST_STOP_NAME. 
     * 
     * 
@return component status name
     
*/

    
public String getStatusName();
    
    
/**
     * if component active return true
     * 
     * 
@return true if component is in status ST_RUN
     
*/

    
public boolean isActive();
    
    
/**
     * will be invoked after component plugs.
     
*/

    
public void startup();

    
/**
     * will be invoked after component unplugs.
     
*/

    
public void stop();

    
/**
     * set component context to the component.
     * it will auto invoke by CoreComponent
     * 
     * 
@param context set the component context
     * 
     
*/

    
public void setContext(ComponentContext context);

    
/**
     * 
@return get the component context
     
*/

    
public ComponentContext getContext();
    
    
/**
     * get component name
     * 
@return get component name
     
*/

    
public String getName();
    
    
/**
     * get component strartup date
     * 
@return get component strartup date
     
*/

    
public Date getStartupDate();
    
    
/**
     * set startup date to the component.
     * it will auto invoke by CoreComponent
     * 
     * 
@param date startup date
     
*/

    
public void setStartupDate(Date date);


点击查看具体内容:http://www.blogjava.net/xmatthew/articles/185673.html
posted on 2008-03-12 13:48 x.matthew 阅读(1572) 评论(2)  编辑  收藏 所属分类: Spy2Servers

只有注册用户登录后才能发表评论。


网站导航: