作者:vivo 互联网服务器团队- Chen Ningning

本文根据“2022 vivo开发者大会"现场演讲内容整理而成。

经过几年的平台建设,vivo监控平台产品矩阵日趋完善,在vivo终端庞大的用户群体下,承载业务运行的服务数量众多,监控服务体系是业务可用性保障的重要一环,监控产品全场景覆盖生产环境各个环节。从事前发现,事中告警、定位、恢复,事后复盘总结,监控服务平台都提供了丰富的工具包。从以前的水平拆分,按场景建设,到后来的垂直划分,整合统一,降低平台割裂感。同时从可观测性、AIOps、云原生等方向,监控平台也进行了建设实践。未来vivo监控平台将会向着全场景、一站式、全链路、智能化方向不断探索前行。

监控服务平台是自研的、覆盖全场景的可用性保障系统。经过多年深耕,vivo监控团队已经成体系构筑起一整套稳定性保障系统,随着云原生可观测技术变革不断深化,监控团队如何掌舵前行?下面就平台的建设历程、思考、探索,做一下简单介绍。

一、监控体系建设之道

1.1 监控建设历程

回顾监控建设历程,最初采用Zabbix,与告警中心的组合实现简易监控。随着业务的发展在复杂监控场景和数据量不断增长的情况下,这种简易的组合就显的捉襟见肘。所以从2018年开始我们开启了自研之路,最开始我们建设了应用监控、日志监控、拨测监控解决了很大一部分监控场景没有覆盖的问题;2019年我们建设了基础监控、自定义监控等,完成了主要监控场景的基本覆盖;2020年我们在完善前期监控产品的同时,进一步对周边产品进行了建设;随着AI技术的不断成熟,我们从2021年开始也进行了转型升级,先后建设了故障定位平台、统一告警平台有了这些平台后我们发现,要想进一步提升平台价值,数据和平台的统一至关重要;所以从2022年开始建设了统一监控平台,也就是将基础监控、应用监控和自定义监控进行了统一,统一监控包含了统一配置服务和统一检测服务。从监控的建设历程来看,我们一路覆盖了IaaS、PaaS、DaaS、CaaS等平台。我们的职能也从DevOps向AIOps迈进。

1.2 监控能力矩阵

讲了监控的发展历程,那么这些监控产品在我们的生产环境中是如何分布的呢?要想支撑数以万计的业务运行,需要庞杂的系统支撑,服务器、网络环境、基础组件等,都需要监控系统保障它的稳定性。我们将监控的对象分为五层,在基础设施层,包含了网络设备、服务器、存储硬件等,这一层我们通过VGW监控对网络设备进行监控,VGW是Vivo Gateway的缩写,类似于LVS;通过自定义监控,对机房进行监控;系统服务器层,我们定义的监控对象是服务运行依赖的环境,通过主机监控对物理机、虚拟机等监控,当前容器在云原生技术体系中,已然成为微服务运行的最佳载体,所以对容器的监控必不可少;系统服务层,包含了各种数据库产品、大数据组件等,在这一层主要通过自定义监控检测、告警;业务应用层,主要有应用服务,我们通过应用监控对业务链路信息进行监控;客户体验层,我们定义了端上的访问质量,由宙斯平台实现监控。前面我们讲了监控能力矩阵,下面我们具体介绍一下监控的范围和整个平台的能力。

1.3 监控对象范围

监控对象涉及网络、主机、基础服务等。面对各地机房我们做到了监控全覆盖,为满足各类环境部署诉求,我们可以做到针对不同环境的监控。我们支持多种采集方式,SDK和API采集主要应用在自定义监控场景,Agent主要采集主机类指标,采集上来的时序数据经过预聚合、统一的数据清洗,然后存储在TSDB数据库。针对海量数据存储我们采用了数据降精,宽表多维多指标等方案。我们常用的检测算法有恒值检测、突变检测、同比检测等,同时还支持了无数据检测、多指标组合检测,检测出现的异常我们会形成一个问题,问题在经过一系列的收敛后发出告警,我们有多种告警通道,支持告警合并、认领、升级等,需要展示的指标数据我们提供了丰富的自定义指标看板,对使用频率高 固化场景,我们提供了模板化配置方案。有了完备的监控体系,那么系统的关键指标和监控对象体量如何?

1.4 监控系统体量

当前监控服务体系保障着x万+的主机实例,x万+的DB实例,每天处理x千亿条各类指标和日志,对x千+的域名做到秒级监控,对x万+的容器实例监控,每天从统一告警发出的各类告警达到x十万+ ,对主机实例的监控覆盖率达到x %,监控平台通过不断的探索实践,实现了对海量数据计算存储,当前对核心业务的告警延迟在x秒以内,告警召回率大于x %。

1.5 监控系统面临挑战

虽然现阶段取得了一些成果,但是目前仍然面临很多挑战,主要分为三大类: