程序猿之路

关于监控平台相关技术

2017-08-08  本文已影响21人  三斤牛肉

最近在看公司的监控平台实现,大概做一个总结

从整个系统架构上来讲,分为Server和Client两层:

Server端

包含不同产品,应用,集群,监控项配置等

包含某一项或多项监控项到达阈值时的短信/邮件等消息

Client端

对收集的监控项发送到Server

采集系统相关或业务相关信息

包括对异常,日志,RPC调用,数据库调用等通用的接口/实现进行代理,实现采集功能扩展

因为看的是Client代码,所以主要对这块进行一个分析和总结。从技术上来说当数据已经采集到Server端后其实和普通的业务系统差别不大。

消息发送

信息采集

当前将采集的信息分为两层,见下图:

image.png

举例:采集异常信息的时候可以分为ExceptionCollector,内部可以分不同的Exception类型或日志类型做为Aggregator。

通用业务代理

通过Javassist动态代理类对常用的工具/类进行扩展,比如代理的Log4j日志采集,dubbo注册实现代理等。
这里的需要对被代理的工具/类源码有非常深刻的了解。
当系统启动时会通过java.lang.instrument包实现用代理后的类代替掉JVM中原始类
java.lang.instrument.Instrumentation基本功能和用法:
http://blog.csdn.net/yczz/article/details/51656386

启动应用是添加的代理:


image.png

反编译后结果:

image.png

执行初始化:

image.png

总结:

image.png

当然这只是宽泛的总结,真正在实现的时候还有很多坑要踩。

上一篇下一篇

猜你喜欢

热点阅读