文章出自:阿里巴巴十亿级并发系统设计(2021版)
链接:https://pan.baidu.com/s/1lbqQhDWjdZe1CBU-6U4jhA 提取码:8888
目录
在一个项目的生命周期里,运行维护占据着很大的比重,在重要性上,它几乎与项目研发并驾齐驱。而在系统运维过程中,能够及时地发现问题并解决问题,是每一个团队的本职工 作。所以,你的垂直电商系统在搭建之初,运维团队肯定完成了对于机器 CPU、内存、磁盘、网络等基础监控,期望能在出现问题时,及时地发现并且处理。你本以为万事大吉,却没想到系统在运行过程中,频频得到用户的投诉,原因是:
- 使用的数据库主从延迟变长,导致业务功能上出现了问题;
- 接口的响应时间变长,用户反馈商品页面出现空白页;
- 系统中出现大量错误,影响了用户的正常使用。
这些问题,你本应该及时发现并处理的。但现实是,你只能被动地在问题被用户反馈后,手忙脚乱地修复。这时,你的团队才意识到,要想快速地发现和定位业务系统中出现的问题, 必须搭建一套完善的服务端监控体系。正所谓“道路千万条,监控第一条,监控不到位,领导两行泪”。不过,在搭建的过程中,你的团队又陷入了困境:
- 首先,监控的指标要如何选择呢?
- 采集这些指标可以有哪些方法和途径呢?
- 指标采集到之后又要如何处理和展示呢?
这些问题,一环扣一环,关乎着系统的稳定性和可用性,而本节课,我就带你解决这些问 题,搭建一套服务端监控体系。
监控指标如何选择
你在搭建监控系统时,所面临的第一个问题就是,选择什么样的监控指标,也就是监控什 么。有些同学在给一个新的系统,设定监控指标的时候,会比较迷茫,不知道从哪方面入 手。其实,有一些成熟的理论和套路,你可以直接拿来使用。比如,谷歌针对分布式系统监控的经验总结,四个黄金信号(Four Golden Signals)。它指的是,在服务层面一般需要监控四个指标,分别是延迟、通信量、错误和饱和度。
- 延迟:指的是请求的响应时间比如,接口的响应时间、访问数据库和缓存的响应时间。
- 通信量:可以理解为吞吐量,也就是单位时间内,请求量的大小。比如,访问第三方服务 的请求量,访问消息队列的请求量。
- 错误:表示当前系统发生的错误数量。这里需要注意的是, 我们需要监控的错误既有显示 的,比如在监控 Web 服务时,出现 4 * * 和 5 * * 的响应码;也有隐示的,比如,Web 服务虽然返回的响应码是 200,但是却发生了一些和业务相关的错误(出现了数组越界 的