监控系统
监控问题罗列
# 1.线上发布了服务,怎么知道它一切正常,比如发布5台服务器,如何直观了解是否有请求进来,访问一切正常。
# 2.当年有一次将线上的库配置到了Beta,这么低级的错误,排错花了一个通宵,十几个人。
# 3.某个核心服务挂了,导致大量报错,如何确定到底是哪里出了问题。
# 4.SOA带来的问题,调用XX服务出问题,很慢,是否可以衡量?
# 5.应用程序有性能瓶颈,如何提供一些有效工具发现?
# 6.如何实时查看线上借口的性能,包括压测,借口太慢如何定位?
# 7.如何统计线上流量以及接口调用量?
# 8.线上接口可用率不到100%,如何进行告警?
# 9.线上服务器缓存,jvm,GC如何进行实时监控?
# 10.程序代码运行情况监控,监控一段代码运行情况,运行时间统计,次数,错误次数等等.
# 11.异常/错误等问题监控.
# 12.SQL执行监控.SQL执行监控可以看到每个DAO方法执行解析的SQL语句,SQL语句执行时长,
# 13. 以及链接到那个数据库(URL)执行;如果SQL执行出现异常,还会记录异常信息,另外还可以过滤出慢SQL.
监控手段
按监控层次分:业务监控、应用监控和基础监控等;
按监控日志来源分:基于日志文件监控、基于数据库监控和基于网络监控等;
按监控领域分:前端监控、后端监控、全链路监控、业务间监控等;
按监控目标分:系统故障监控、业务指标监控、应用性能监控、用户行为监控、安全合规监控等。
监控领域非常复杂,像开源实施分布式监控系统 CAT,从监控分层看,它擅长应用监控,有一定的业务监控和基础监控能力;它是基于网络来完成日志数据的传输的,将来会支持日志文件和数据库作为数据源;它已经覆盖前后端监控能力,通过良好的实施可以做到全链路监控和业务间监控,监控的目标更是非常多样化。但 CAT 对监控团队的技术开发和运维能力提出了很高的挑战,一般在大型互联网公司,都设有专门的监控研发团队,基于 CAT 做二次开发,支持业务的多样化需求。
哪些比较好的分布式系统监控项目
国内外分布式系统监控项目应该有很多,能开源并且愿意开源的不多,最近比较常用的,国外有 ELK、ZipKin 和 Pinpoint,国内的有 CAT、SkyWalking、Open-falcon 等。 ELK 是基于日志文件做监控的,ZipKin 和 Pinpoint 有些功能不错,小公司用的多一点,相对比较简单,功能不是很丰富,公司做大了以后会碰到很多可扩展性方面问题。