卷首语:流水的架构,铁打的监控
作者 张婵
随着云计算为应用打造好分布式的基础设施,软件架构也从 SOA 逐渐进化到微
服务。微服务粒度更细,每种服务只做一件事,是一种松耦合的能够被独立开
发和部署的无状态化服务。微服务的灵活性和高可用性能让部署更便捷,缩短
交付周期。但是同时,引入微服务也会带来更多的技术挑战,对于架构设计和
业务梳理要求更高,现如今业务快速发展,服务器越来越多,中间件、应用、
微服务、数据库等也越来越多样化,监控是微服务控制系统的关键部分,软件
越复杂,就越难了解其性能及问题排障。
微服务架构下的监控有如下难点:
监控对象动态可变,无法进行预先配置;
监控范围非常繁杂,各类监控难以互相融合;
微服务实例间的调用关系非常复杂,故障排查会很困难;
微服务架构仍在快速发展,难以抽象出稳定的通用监控模型。
而在监控系统的设计上,技术选型也是一个不容忽视的问题。很多公司都是根
据自己的系统架构和业务需求自研监控系统,但同时现在也有很多成熟的开源
监控软件,在它们的基础之上进行二次开发就能满足自己的需求,还能节省不
少开发和后期维护成本。
目前我们正处在云原生的技术浪潮之中,Kubernetes 及围绕其的生态系统能
很好地适应现在软件架构。而 Kubernetes 社区推崇的监控工具 Prometheus
也是微服务架构下比较理想的监控系统。Prometheus 使用 Pull 模型,具有灵
活的数据模型和强大的查询能力,其生态系统也比较健全。在今年 8 月份,
Prometheus 正式从 CNCF 毕业,表示它本身已经具备一定的成熟度和稳定性,
项目在 GitHub 上也获得了超过 2 万的 Star 数,足以见其受欢迎的程度。即便
如此,Prometheus 也还有其欠缺的地方难以满足微服务监控,比如数据持久
化方面做得不好;仅适用于维度监控,不能用于日志监控、分布式追踪等范围
等等。所以目前使用 Prometheus 的团队多在其基础之上与 ELK 技术栈合用,
并对监控系统进行高可用的架构设计。
另外,在微服务架构里,软件系统通常会被拆分为数十甚至数百个微服务,这
种拆分会使得监控数据爆炸增长,监控系统必须具备处理和展示这些数据的能
力。因此在微服务监控中,也需要用到一些可观察性工具,用数据面板展示一
些指标,方便进行报警及后续问题排查。
现在微服务模式正在逐步走向巅峰,也会有越来越多的团队向微服务架构转型。
但是监控系统的设计思路到底如何理清?在监控方面有丰富的经验,开源实时
监控系统 CAT 的作者吴其敏曾在采访中说,监控首先要解决的是目标设定,到
底要解决什么问题,关注什么指标,不管现存的还是潜在的,如果没有问题就
不需要监控。如果目标明确了,第二步就可以指定方案,怎么样通过已有的机
制解决,或者使用新的创造性的方法,达到目标。接下来就是方案的落地实施
了,数据在哪里,需要通过什么手段拿到。最后一步,等系统上线有结果后,
需要去做验证,是不是真的达到了预期,还是目标设定需要调整。这四步可以
不断迭代,直到各种监控问题都可以被解决。
目录
01 网易云基于 Prometheus 的微服务监控实践
02 51 信用卡在微服务架构下的监控平台架构实践
03 360 容器平台基于 Prometheus 的监控实践
04 专访 Zipkin 项目 Leader:如何在分布式追踪系统中用好 Zipkin
05 微服务架构下的监控需要注意哪些方面
评论