首页 > 代码库 > 设计讨论:监控系统,监控什么?
设计讨论:监控系统,监控什么?
一个监控系统要监控些什么?
从粒度上,从小到大可以列出:一两行代码、一个方法、一个服务接口、一个服务的调用链、一个应用服务(应用端口、jvm的cpu和内存占用等)、硬件(cpu、网卡、硬盘等)。
对方法的监控,可以扩展到对http链接/连接池的监控、对数据库连接/连接池的监控、对其它服务的调用等。
对一两行代码进行监控,不可避免的要侵入到被监控端。对方法、服务接口的监控,可以利用在适当位置织入AOP的切面。一个服务的调用链,则对服务的调用双方都有入侵。对应用、硬件的监控,和应用本身脱钩,但是对服务器有入侵。
从监控方法上,可以在被监控端注入agent、可以监控日志、可以用JMX工具、可以在服务器上跑脚本,等等。
注入agent需要注意性能和健壮性、可扩展性。不能因为agent而影响到被监控者的性能、功能;也不能因为监控系统增加了新的监控功能,而使得旧的agent无法正常运行。
监控日志虽然不需要直接侵入被监控者的代码,但是通常都要求被监控者按一定规则输出日志。这是另一种形式的代码入侵。另外,日志监控会有一定的延迟和不可靠性。例如,如果一段时间内都没有日志,监控系统如何判断此时是没有业务调用,还是应用已经OOM了?
JMX工具提供的是标准接口,除了JVM之外,应该还可以监控一些内存中的实时数据。服务器脚本方面,对开发人员来说可能会涉及一些学习成本。
除了监控外,监控系统还需要具备报警和统计分析功能。
报警功能一定要保证实时性和可靠性。
统计分析功能要小心数据库的增长。
本文出自 “编程的摩羯男” 博客,谢绝转载!
设计讨论:监控系统,监控什么?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。