系统稳定性之监控报警建设

  • 自己目前将一个系统从零起步,逐渐完善,一路走来,对整个系统的稳定性也是比较满意, 针对高可稳定这个角度,总结下需要包含哪些设计元素。
  • 文章就需要的元素进行大概的总结,不对具体的技术选型,以及设计细节,展开描述。
  • 是自己的实践总结之谈。

rpc

一个大的系统必然会被拆解成若干个小系统,小系统之间的相互调用,一般是通过rpc来调用的。

  • rpc框架能提供自动摘除的功能。 这不仅体现在在系统发布期间,更体现rpc服务成功率过低等问题时,框架能自动摘除服务节点。能自动摘除,最好也能自动上线。
  • 接口性能收集,分析,展示,报表。

监控

关于监控,大概先说下包含的信息点:

  • 得至少需要包含到三层监控:机器监控,程序监控,业务监控;
  • 监控系统提供信息可视化(动态展示),报警,相应的还有报警配置等模块;

机器监控

> 需要监控哪些指标?

以java应用为例,需要包含的监控项有:cpu空闲使用率,cpu load average,内存使用率(不包含cache 和 buffer),swap,disk,jvm 线程总数,jvm runnable 总数,jvm blocked 总数,jvm waiting
的总数,jvm time waiting 的总数, jvm fullgc 的次数以及fullgc持续的时间,jvm younggc 的持续时间,jvm 的堆栈内存情况。

程序监控

  • 监控程序异常(最好报警信息能看到异常的原意,例如异常栈信息).
  • 接口成功率,接口响应时间
  • 下游服务,组件之类的也算,这个太多,暂且不表

业务指标监控

这个也是核心,是产品的生命线,以一个核心交易系统为例,需要例如下面的监控指标:订单成功率,订单冲正笔数,单位时间内的交易笔数,单位时间内的交易金额.