关于监控平台相关技术

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

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

Server端

  • 图形化显示
  • 权限

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

  • 报警等功能

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

Client端

  • 消息发送

对收集的监控项发送到Server

  • 信息采集

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

  • 通用业务代理

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

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

消息发送

  • 目前使用BIO的长连接,当然可以考虑使用MQ,主要看是否有环境支持及开发效率

信息采集

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

关于监控平台相关技术_第1张图片
image.png

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

通用业务代理

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

启动应用是添加的代理:


关于监控平台相关技术_第2张图片
image.png

反编译后结果:

关于监控平台相关技术_第3张图片
image.png

执行初始化:

关于监控平台相关技术_第4张图片
image.png

总结:

关于监控平台相关技术_第5张图片
image.png

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

你可能感兴趣的:(关于监控平台相关技术)