Nepxion Thuder (QQ 1394997)发布在淘宝代码基地 http://code.taobao.org/p/Thunder/
?
通过MonitorStat.java去刻画监控的属性,包括
private String messageId; // 消息ID private String messageType; // 消息类型,取值:Request,Response private String targetType; // 目标类型,取值:Server(服务端),Client(调用端) private long startTime; // A端发出请求的时刻 private long endTime; // Z端收到A端的请求,响应执行目标方法结束后的时刻 private String interfaze; // 接口名 private String method; // 方法名 private String parameterTypes; // 方法参数,例如java.lang.String,int private String host; // 服务或者调用地址 private int port; // 服务提供的端口号或者调用接入的端口号 private String protocol; // 协议,例如netty, hessian等 private String loadBalance; // 采用的负载均衡策略 private String application; // 应用名 private String group; // 组名 private boolean async; // 是否是异步或者同步 private long timeout; // 超时时间 private boolean broadcast; // 是否是广播模式 private Exception exception; // 异常信息?无论通过哪种方式监控,都可以拿到封装好的上述属性列表
?
通过Log4j的配置,把本地基于MonitorStat对象创建的Log生成到远端Splunk服务器硬盘上,Splunk服务器进行相关设置和过滤,就可以看到如上的日志统计。对于Splunk如何使用和工作,在这里就不做介绍了
?
每一个第三方WebService监控中心启动的时候,都往注册中心添加其URL,服务端和调用端通过连接注册中心,获取第三方监控中心的URL列表,同时也实现了对监控中心上下线的监听,达到分布式监控的目的。
服务端和调用端通过Apache 异步Http发送方式,把MonitorStat转化成Json流,用Post方式发往第三方监控中心
原文:http://nepxion.iteye.com/blog/2260171