设计讨论:监控系统,监控什么?

本文详细介绍了监控系统的构建要素,从代码级监控到应用及硬件监控的覆盖范围,并探讨了不同监控手段的优缺点,包括agent注入、日志监控、JMX工具及服务器脚本的应用。此外还强调了监控系统必备的报警与统计分析功能。

一个监控系统要监控些什么?


从粒度上,从小到大可以列出:一两行代码、一个方法、一个服务接口、一个服务的调用链、一个应用服务(应用端口、jvm的cpu和内存占用等)、硬件(cpu、网卡、硬盘等)。

对方法的监控,可以扩展到对http链接/连接池的监控、对数据库连接/连接池的监控、对其它服务的调用等。

对一两行代码进行监控,不可避免的要侵入到被监控端。对方法、服务接口的监控,可以利用在适当位置织入AOP的切面。一个服务的调用链,则对服务的调用双方都有入侵。对应用、硬件的监控,和应用本身脱钩,但是对服务器有入侵。


从监控方法上,可以在被监控端注入agent、可以监控日志、可以用JMX工具、可以在服务器上跑脚本,等等。

注入agent需要注意性能和健壮性、可扩展性。不能因为agent而影响到被监控者的性能、功能;也不能因为监控系统增加了新的监控功能,而使得旧的agent无法正常运行。

监控日志虽然不需要直接侵入被监控者的代码,但是通常都要求被监控者按一定规则输出日志。这是另一种形式的代码入侵。另外,日志监控会有一定的延迟和不可靠性。例如,如果一段时间内都没有日志,监控系统如何判断此时是没有业务调用,还是应用已经OOM了?

JMX工具提供的是标准接口,除了JVM之外,应该还可以监控一些内存中的实时数据。服务器脚本方面,对开发人员来说可能会涉及一些学习成本。


除了监控外,监控系统还需要具备报警和统计分析功能。

报警功能一定要保证实时性和可靠性。

统计分析功能要小心数据库的增长。




本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/1881767,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值