2022 年 7 月 4 日,【可观测,才可靠——云上自动化运维 CloudOps 系列沙龙_第一弹】正式推出。实现和保障系统的高可靠性和高稳定性,是上云后大家最关注的两项重要指标。如何通过云上的自动化 CloudOps 产品体系持续地提高可靠性和稳定性,是研发和运维需要共同努力的重要方向;持续提升可观测性则是达成目标的最直接和最有力的手段之一。
阿里云弹性计算 CloudOps 系列沙龙也将“可观测性与可靠性”作为第一弹的主题。本次沙龙直播覆盖四天,首位分享的嘉宾是阿里云弹性计算 SRE 技术专家杨泽强,他带来的主题分享是 《弹性计算云上可观测性能力构建》,以下是他的演讲内容整理,供大家阅览。
01 Why Observe?
可观测最早起源于农业时代气象观测,后来的电气时代、自动化时代都存在可观测性产品。控制理论中的可观察性指系统可以由其外部输出推断其内部状态的程度,系统的可观察性和可控制性是数学上的对偶概念。
以汽车为例,在驾驶过程我们无法直接感知到汽车系统的内部状态,而通过仪表盘可以获知当前发动机的转速、速度、油量以及其他系统的运行状态。
软件工程里,通过采集 logs、metrics 和 traces 三个维度来理解系统内部状态,即为可观测性。
可观测性对于软件全生命周期有着极大价值。可以通过可观测性查看当前系统负载、异常链路、异常情况以及报警等;可以基于可观测性做预警,再基于预警进行分析,从而尽可能降低故障感知时间和定位时间,最终缩短故障 MTTR。
可观测性是软件系统稳定性保障的基础。而从软件工程整个视角看,可观测性能够提供的远不止稳定性保障。
软件工程最早期的需求分析阶段,可以通过可观测性进行容量预算评估;CI 阶段可以进行研发质量控制,比如构建成功、测试覆盖率等;交付过程中,可以通过可观测性对交付质量进行保障;同时成本和安全也能通过可观测性得到有效控制。
从软件的整个生命周期来看,如何构建自己理想的可观测性模型并没有标准答案。但是从单体应用或分布式应用到微服务等典型的软件架构来看,可以抽象出一个标准模型,如上图,由下至上分为 5 层:
⚫ 资源层:包括主机、存储、网络、Runtime 等。
⚫ 平台层:包括 RPC、DB、消息、缓存、调度等。
⚫ 应用层:包括可用率、时延、错误数、流量、饱和度、日志等。
⚫ 产品层:包括订单量、订单成功率、生产成功率