前言
本文是作者关于可观测性的理解和实践。主要内容有
- 可观测性在整个商业体系中的位置和价值
- 如何快速发现故障,使用哪类指标告警
- SRE 在谈论故障定位的时候,谈的是什么
- 如何找到故障直接原因,找到止损依据
- 如何让可观测性系统呈现观点,辅助洞察,定位故障
可观测性的价值
一个事情,价值太小就不值得投入。
- 事前:及时发现风险,做好架构、预案和演练
- 事中:及时发现故障,及时定位,及时止损
- 事后:排查根因,落实复盘改进项
可观测性在整个过程中的职能在哪个环节发挥价值。
客户/用户需要好的产品体验,好的产品体验包括可靠性体验,要想有好的可靠性体验,就得减少故障,所谓的降发生、降影响,而这,又依赖了可观测性的能力。所以:可观测性最终是服务于产品体验、服务于商业成功的。核心目标是快速发现、定位故障。
如何快速发现故障
先定义什么是故障?产品体验受损。
- 电商产品:用户无法下单、无法支付、无法查看商品、无法查看历史订单
- 存储系统:用户无法读、无法写、或者读写延迟过高
- 流媒体产品:无法开启播放、无法拉流、无法浏览视频信息
定义产品体验受损
- 电商产品:订单量、支付量、商品/订单访问成功率/延迟
- 存储系统:读/写成功率、读/写延迟
- 流媒体产品:播放量和成功率、拉流延迟、视频浏览成功率/延迟等
SLO指标正常的时候,业务指标未必正常。一定要重视业务指标体系的构建和监控。
SRE谈故障定位
数据->特征->观点->洞察
故障原因五花八门
故障可能是电源模块坏了、机房空调坏了、机柜压住网线了、供电不稳、某个盘故障了、中间件配置错了、被黑客攻击了、分布式中间件脑裂了、写日志hang住了、程序配置错了、程序连接第三方的地址错配成线下地址了、DNS配错了、证书过期了、代码Bug了、疏漏了某个罕见用户流程
如何找到故障的直接原因
首先,依赖的基础设施(基础网络、硬件、Runtime环境)不能出问题,依赖的第三方其他服务不能出问题
具体要如何做
可观测性体系还需要利用平台能力、通过数据运营整理,呈现数据特征、帮用户建立初步观点,最终形成洞察,定位故障直接原因。
可观测性体系要告诉我故障模块
技术角度来看,一般模块都是有层级关系的,首先是系统,然后是子系统,然后是模块。所以,初始页面应该展示系统的健康状况,如果某个系统有问题,应该可以点击进去查看详情(这个过程称为下钻),下钻到子系统,再下钻到模块,最终找到故障模块。
故障模块的各项依赖是否健康
模块依赖的数据库、中间件、基础网络、机器硬件、第三方服务等等,都会影响模块的健康状况。所以,当模块异常的时候,我们需要知道各项依赖是否健康,如果依赖也异常,那么模块异常的直接原因基本可以断定是异常的依赖项导致的。
故障是否是变更导致的
线上故障,大概 70% 都是变更导致的,所以运维行业中流传一句话叫:“变更是万恶之源”。
提供工具分析数据特征
提供工具帮我们分析数据特征,别让用户陷入海量散乱的可观测性 raw data 中。这需要多维分析引导能力、数据串联打通能力。
评论 (0)