乔新亮CTO之路-专业8:监控设计

备注说明:相关总结属于个人学习笔记,请勿商用,感兴趣的可在极客时间订阅该《乔新亮的CTO成长复盘》专栏学习,谢谢~

要想深刻理解监控的概念,我们首先要学会问自己:为什么要做监控系统?这就像许多工作方法论里强调的一样,做事先问目的 —— “start with why”。
监控的目标是及时发现系统的问题,并尽可能快地做出相应的动作,让系统一直处于健康的状态。
监控,可以拆分为“监”和“控”分别理解,也就是“监视”和“控制”

例子
服务器的 CPU 负载突然飙升
“最近线上有什么版本变动吗?都回退了吗?”
研发同学:只会退了指定版本没有 会退到上一个版本。
真的都回退了吗?
同学一拍脑门,犹豫地说道:“我在数据库里加了条索引,不过这肯定不会导致负载异常……”
删除索引后一切正常了。。

IT 团队的系统监控体系,到底出了什么问题?
生产环境应急恢复的最大挑战在于根因分析,即找到问题的根本原因,这往往是耗时最久的工作。

常规的操作

  1. 发现问题后,立即联系各相关系统负责人,以便共同排查问题;
  2. 要求大家在一分钟之内回复:自己治下的系统或服务是否健康(这里要将“健康”的定义想清楚,如,响应时间是否增加超过 30% 等);
  3. 进行根因分析,确认导致问题的系统、服务;(人员规模也会越来越大,花费的时间就会脱离控制。)
  4. 完成系统恢复工作。

针对:根因分析
首先,我们要确认异常是外因导致,还是内因导致。
比如,服务响应慢,既可能是因为外部调用量变大,也可能是因为内部进程繁忙,导致 I/O 、内存、网络资源发生争抢。这步判断相对来说比较耗时间,只有当调查足够充分时,结果才可能浮出水面;
无论是内因还是外因,都要“顺藤摸瓜”,继续进行排查,最后进行恢复。

有效的方法:

流控和版本回退,简单、粗暴、实用。
流控,就是做好程序的并发流量控制;
版本回退,就是在生产环境的发布出现问题时,及时回退到上一个版本。

生产环境出现问题,原因:变化。
“变化”大三类:

  • 外部用户请求量增大;
  • 产品发布,一般包括代码发布、配置发布、SQL 脚本发布等;
  • 依赖资源变化,一般是计算、存储、网络基础设施情况变差,比如磁盘存在坏道等。

优化过的操作

  • 发现问题后,立即联系各相关系统负责人,以便共同排查问题;
  • 要求大家在一分钟之内回复:自己治下的系统或服务是否健康(这里要将“健康”的定义想清楚,如,响应时间是否增加超过 30% 等)
  • 此处组织两批研发力量,并行工作。第一批解决专业问题,继续跟进问题的定位和调试
  • 第二批负责消灭变化,对有变化的模块进行回退,对于外部请求数量升高的模块启动流控; 恢复系统

核心
对于任何组件,都有以下两种手段同时存在: 流控手段; 发布回退手段。

认知转变
在生产环境,研发人员应该寻找并消灭“变化”。从寻找 bug 到寻找变化。

刚才例子复盘

  • 错误一:负责发布的同学,没有按规定回退至稳定版本,而是询问开发同学的意见,并以其意见为准;
  • 错误二:相关负责人,因为假设“一条索引不会导致故障”而知情不报,导致系统无法完全回退;
  • 错误三:十几名团队成员没有将精力聚焦在线上业务恢复方面,而是试图在生产环境查找 bug。
    程序员总觉得找到问题才是高手,回退解决不了问题。

记住:
要改变自己潜意识找bug的第一想法,我们的目标是:即使找不到 bug,依然可以做好故障恢复。
生产环境永远不允许调试问题,出现问题立刻回退,查问题要去测试环境。

对于复杂系统不好回滚,可以参考亚马逊:大版本立项,小版本上线 —— 梳理好各模块的依赖关系,将各个系统、各个服务独立发布。当然,这也需要依赖服务版本化和 CI 能力的支持。

总结

要做到监视一切,分析一切,控制一切,
“眼”能看见所有,“脑”能洞察一切,“手”能一手遮天,
一切业务数字化,一切数据可视化,一切控制可触发

监控的目的是让系统一直处于健康状态,具体手段则可分为“监视”和“控制”两种;要做好控制,一个重要的方法是做好流控和版本回退。因为在大部分情况下,消除变化就等于消除异常。

不单是技术、业务系统需要做好监控,研发管理、团队管理都要做好监控。
关于研发管理,我们在“高可用设计”部分曾提到:风险是经由开发环境、SIT 环境、压测环境、PRE 环境,进入生产环境的。所以我们要做的是严格检查各个环境下的异常。
所谓研发管理规范,应该为代码版本进入下一个环境设置准入标准。对于任何异常,都有负责人进行修正。
对于团队管理,我们常常说,组织是结果导向的,但管理工作是过程导向的。关注过程自然就会得到好的结果,只盯着结果往往什么也得不到。
对于一个项目、一个产品,乃至于团队的健康度,管理者有没有在关键节点设置监控?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容