使用jmx监控service接口
1:现在很多系统使用了dubbo的调用方式,这样就跳过了stc框架的状态机的,系统运行的状况就不能看到,不知道运行的方法效率性能!以及异常状况的监控!
思路:基于spring的aop方式,通过拦截器,对service的执行方法起始时间,结束时间记录下来,然后jmx监控起来!
这样会对service层包下面所有的类都会监控,所以考虑针对特定的类和方法来实现!本人比较喜欢使用注解,所以使用注解来实现!
增加一个注解!在需要的方法或者service层上面注解就可以实现对特定的类和方法实现监控!也可以监控执行异常的数量!
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Monitor {
/**
* 默认jmx暴露该方法
* @return
*/
public abstract boolean registerMBean() default true;
}
使用方式:
项目中载入jar包:service-monitor.jar
然后在使用的项目中使用:配置xml文件:
<import resource="classpath:buildinUnits/montior/service-aop.xml" />
默认是对含有service名称的包路径都会去拦截!
如果要自主配置的话:execution.service.package.name = execution(* com.skymobi.market.applist.service.*.*(..))
jmx 前缀的话,可以自己配置 ${jmx.prefix} 或者配置 ${app.name}
不然会使用默认的 前缀:public:app=servicemonitor,
注意依赖的jar包: