Dubbo monitor模块分析

Monitor功能模块的逻辑在MonitorFilter类中,通过Dubbo的SPI的activate机制

 

@Activate(group = {Constants.PROVIDER, Constants.CONSUMER})
public class MonitorFilter implements Filter


服务提供者和消费者都会激活这个filter,invoke方法内部会调用MonitorFilter内部的collect方法,其主要逻辑

 

(1)通过url的monitor_key及spi机制得到Monitor

(2)调用Monitor的collect方法。

注意的是,协议在接收请求时,应记录请求来源方地址信息

 

public interface Monitor extends Node, MonitorService {

}
    /**
     * 监控数据采集.
     * 1. 支持调用次数统计:count://host/interface?application=foo&method=foo&provider=10.20.153.11:20880&success=12&failure=2&elapsed=135423423
     * 1.1 host,application,interface,group,version,method 记录监控来源主机,应用,接口,方法信息。
     * 1.2 如果是消费者发送的数据,加上provider地址参数,反之,加上来源consumer地址参数。
     * 1.3 success,faulure,elapsed 记录距上次采集,调用的成功次数,失败次数,成功调用总耗时,平均时间将用总耗时除以成功次数。
     * 
     * @param statistics
     */
    void collect(URL statistics);

    /**
     * 监控数据查询. 
     * 1. 支持按天查询:count://host/interface?application=foo&method=foo&side=provider&view=chart&date=2012-07-03
     * 1.1 host,application,interface,group,version,method 查询主机,应用,接口,方法的匹配条件,缺失的条件的表示全部,host用0.0.0.0表示全部。
     * 1.2 side=consumer,provider 查询由调用的哪一端采集的数据,缺省为都查询。
     * 1.3 缺省为view=summary,返回全天汇总信息,支持view=chart表示返回全天趋势图表图片的URL地址,可以进接嵌入其它系统的页面上展示。
     * 1.4 date=2012-07-03 指定查询数据的日期,缺省为当天。
     * 
     * @param query
     * @return statistics
     */
    List<URL> lookup(URL query);

 

 


通过spi获得的Monitor是DubboMonitor,DubboMonitor的collect方法,里面的一个关键数据结构为Statistics

 

 

 

 

    private URL url;
    
    private String application;
    
    private String service;

    private String method;
    
    private String group;

    private String version;
    
    private String client;
    
    private String server;


DubboMonitor在初始化时,会启动一个定时器,默认60s执行一次send方法。这个send方法会把汇总的信息,通过dubbo服务MonitorService发送到监控中心,然后从汇总信息中减掉已统计数据。

最后欢迎大家访问我的个人网站:1024s​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值