系统监控一直是项目完整性的一个要素,“不让没有监控的系统上线”,这条准则也逐渐得到越来越多的人的认可。如果一个系统监控缺失,我们就无法知道系统的运行状态,以及业务的各个方面的情况,甚至系统出现宕机或者重大故障也不得而知,以至于造成重大损失。

爱奇艺乐道中台是由爱奇艺内容中台团队建设的集视频、音频、字幕、图片等内容的全流程生产、发布及运营的中台服务。随着业务发展及微服务化的逐渐深入,系统项目越来越多,目前已有微服务100+,需要维护内容也越来越多,链路越来越长,现有的监控手段已不能满足业务发展的需要,涌现出更多更迫切的监控需求,如:

1、高效及时的发现、定位系统异常问题

系统出现异常时需要立刻感知,在业务反馈之前发现问题,定位问题需要更加高效,可视化,不能仅去服务器查日志定位问题,这样通常需要花费很长时间才能定位原因,甚至如果日志过多还不能准确定位。

2、上线过程可监测,出现问题第一时间回滚

每次系统发布上线都是一次bug降生的窗口期,相当比例线上问题都是上线导致或者引入的,因为一个稳定的服务,你不去更新系统代码,正常情况下不会自发的产生问题。我们需要可监测的上线过程,及时修复问题。

3、全面准确的度量系统服务、接口、数据库等性能

我们需要更加全面和方便的监测整个系统对外提供的服务接口和系统依赖的外部服务接口性能,QPS、慢查询等其他性能指标,性能如果有潜在问题可能在关键时候,如流量突增,导致数据库连接池打满、长事务、拖垮整个网关等重大故障。

4、更加及时和稳定的监测服务健康情况

虽然目前部署的服务都是双份或者多备份部署,可用性有保证,但是还是往往会出现其中部分服务出现宕机等情况,我们需要第一时间感知到这种问题,并具有持续的稳定监测。

5、及时监测机器(容器)性能变化

当系统遇到突发流量或者攻击等原因时很可能导致连接池打满、OOM,数据库打满,CPU、内存、磁盘打满等基础问题,这些都会导致重大事故,无法及时的监控到,就无法及时的处理,导致重大线上故障。

6、更加完善清晰的业务监控

以上叙述了系统监控方面的迫切需求,在业务方面如果没有监控,如节目生产数量、成功率、时效等,那么整体业务运行情况对于维护者而言就是一个黑盒,这就会陷入一个被动局面,业务的发展是技术保障的目标,不知道目标发展情况,就会让许多工作失去意义。

在业务量较少,系统较少,微服务较少的时候,我们对于监控系统的需求越少,随着业务、系统爆炸性的发展就会维护起来越来越吃力,我们需要建立完备的监控体系去补齐这个短板,对各个服务、业务心中有数,为业务快速发展提供保障。

监控内容及技术选型

经过梳理,目前我们服务系统需要监控的具体内容有:

1、机器监控

最基础的监控,主要监控承载各个系统的虚拟机或者容器的运行情况,主要有CPU、内存、磁盘、网络等大的方面,具体指标如:cpu.busy、cpu.idle、cpu.load.5min.per.core、mem.memfree、net.if.in.bytes、df.statistics.used.percent等。

2、系统监控

各个系统所有接口、服务的监控,主要如服务状态、qps、接口性能、成功率、错误日志等。

具体如:服务健康情况、服务api接口qps、服务api接口性能、成功率、集群中各个机器qps、集群中各个机器访问量、整个集群qps压力、整个系统异常日志趋势等数据。

3、业务监控

根据各个服务承载的具体业务,建立业务数据大盘及相对应的监测报警策略,方便观测业务发展情况、系统运行情况、以及为业务发展决策提供参考和帮助。

在本着不重复造轮子的原则下,首先我们调研了公司内部现有基础监控系统的功能、接入方式、侵入性、优缺点等,由于公司内部监控系统功能比较分散、单一,无法满足我们所需的全面监控需求,所以我们倾向于自建,于是调研了常见的开源监控系统:

1、OpenFalcon

OpenFalcon是小米开源的监控系统,能够提供丰富的基础监控指标。

优势:易于接入,基本无入侵,可自定义上报数据

劣势:主要监控机器指标,系统监控不足

2、Prometheus

Prometheus是由前谷歌员工2015年正式发布的开源监控系统。它和OpenFalcon最大不同在于:数据采集是基于Pull模式的,而不是Push模式,并且架构非常简单。

优势:查询引擎强大,支持PromQL,可以对数据做各种实时计算。

劣势:不易用,学习成本高,功能不够完善,基本需要搭配Grafana创建仪表盘以及查看指标。

3、开源监控系统CAT

CAT 是美团点评开源的实时应用监控平台,提供了比较全面的实时监控告警服务。

优势:监控功能强大,基本上可以覆盖各种监控场景

劣势:接入成本较高、对业务代码侵入较大

经过多方面比对以及结合我们系统业务的监控需求,最重要的是监控功能的全面、稳定、成熟的UI、报表、告警,所以我们最后选型CAT作为我们各个系统微服务的监控系统。

LEDAO-CAT监控系统的落地

1、部署与迭代

CAT的部署最初是以GitHub开源代码以及相关文档进行最小化部署和试用,最初用于虚机上的少量业务系统,通过实验发现试用效果很好,满足我们对于监控系统最初的需求,随后我们对CAT进行了若干次的升级改造,来逐渐优化以适用乐道中台的业务和环境。

目前整个乐道中台部署的CAT监控系统分别服务于海外、中国大陆,每个区域都部署了一个集群服务于对应的业务系统,如图1所示,其中目前以中国大陆的集群服务最多,国内集群微服务接入量100+、TPS 1w+,每日处理数据量1.5TB 左右,业务系统与CAT监控系统的交互如图2所示👇

图 1 LEDAO-CAT部署

图 2 交互流程

其中,目前CAT支持的业务应用包括物理机、虚机、QAE容器等系统运行环境,服务通过引入ledao-cat-client包后进行简单的环境配置和监控配置即可接入监控系统,对相关的服务进行全方面的监控。

主要流程是cat-client-proxy收集监控配置,与服务端建立连接,通过读取需要监控的项的配置,对要监控的数据进行上报,上传到CAT服务端后对于原始数据处理、聚合、告警等。

2、升级和改造

(1)CAT接入方式和监控埋点升级

原生CAT在系统接入时的方式是在每各应用所在的虚机固定路径上配置client.xml,其中内容主要是服务端的连接地址和端口,这样就需要在服务部署的每台机器都去配置文件,运维成本极高,在公司无统一运维的情况下,接入和维护成本都很高,而且这种方式不适用于QAE容器部署。为了解决上述问题,我们对CAT接入配置模块进行了改造,使其支持三种方式的接入配置:传统xml文件,QAE环境变量,系统配置文件properties(xml),使其配置与宿主机解耦,只依赖于应用本身。

另外,CAT监控是具有侵入性的监控系统,需要在监控的地方埋点上报数据进行监控,原生的埋点方式基本是切面方式,为了简化和细化监控埋点工作,我们开发了proxy代理包,方便用户接入,其中主要扩展的埋点方式为:传统切面、声明式注解(service、method、controller、dao),以及批量配置文件方式(properties),具体如图3所示👇

图 3 接入方式

(2)新增CAT健康检查模块

CAT的各项监控功能已经非常全面,但是却没有应用健康的监控,监控的方式是由客户端进行数据上报,当服务宕机时,业务不可用时往往就会停止数据上报,但是CAT目前无法检测到这种客户端宕机异常,所以我们对原生CAT进行了升级,加入cat-health健康检查模块到CAT系统中,通过CAT配置健康检查,以及客户端上报的应用信息,健康检查模块会定时从不同机房拨测应用来检测应用的健康状况,如果多次反复检测到应用异常,会根据一定的判定规则进行告警通知,通过新建健康检查模块填补了原生CAT监控的空白。具体如图4所示👇

图 4 健康检查

(3)告警方式升级

此外,在原有开源CAT告警方式基础上,结合爱奇艺自有的告警体系,我们将两者进行了融合对接,通过整合完备了整个监控系统的告警体系,支持以爱奇艺邮件、热聊、短信的方式进行对异常、健康、业务等各方面的告警发送,大大提高了告警信息的触达率,使异常实时可见,及时处理和恢复。

Figure 5 Alarm upgrade

Practice results

Through the deployment of a native CAT and related upgrade, we build a set of complete about middle service monitoring system, the machine abnormal indicators monitoring, service, health monitoring, system monitoring, system performance monitoring, slow query monitoring until the related business monitoring, combined with the CAT powerful alarm configuration and iQIYI alarm way of diversity, As well as the optimized CAT fast access and buried point mode, a whole monitoring link is formed from service fast access — monitoring fast buried point — alarm configuration — alarm contact — alarm processing, which completely fills the gap in the monitoring system.

Specifically,

  1. CAT access methods are diverse, and the connection cost is low. A new service can be connected within 5 minutes.

  2. Combined with cat-client-proxy dependency packages, embedded configuration can be almost invastion-free, and the whole configuration is fast and efficient.

  3. Microservice system can be monitored comprehensively from hardware indicators, health, abnormal conditions, performance, business and so on, covering almost all aspects.

  4. Powerful alarm configuration can push system exception information in real time, so that problems can be quickly detected and handled in a timely manner.

Figure 6 Diagram of each monitoring indicator

Figure 7 Hot chat alarm

Figure 8 Configuring access

Upgrade from minimize deployment experiment, to function, to promote team and colleagues recognition, LEDAO – has developed rapidly, the CAT is about China to the whole team uniform LEDAO – CAT as a monitoring tool, currently deployed respectively two cluster, mainland and overseas security services on stable and efficient operation, the escort for the rapid development of business.

Conclusion outlook

Monitoring system has been the indispensable important part in the process of business development, to provide a vital service and stable operation, for different business systems, of course, also have different monitoring system and its adaptation, at home and abroad at present, different companies have provided some open source monitoring service, the CAT as a good open source monitoring system, Provides a very comprehensive and powerful monitoring function, basically can meet all of our current monitoring needs.

This paper briefly introduces a landing practice of CAT in IQiyi Ledao, mainly introduces our monitoring requirements, solutions, optimization and transformation as well as stage achievements. Although the current functions probably meet our needs, the following deficiencies are still being studied. Such as distributed Transaction, business monitoring, deep integration with NACOS, etc., these are the direction we will do in the future, so as to make the whole monitoring system more perfect and support the rapid development of business faster and better.

Maybe you’d like to see more

Mobile APM network monitoring and optimization practice

Exploration and practice of iQiyi micro-service monitoring

Who says you can’t have “streaming savings” and “HD blockbusters”? Iqiyi “enhanced picture quality” function, with ZoomAI technology, so that users really enjoy the low-cost pleasure of watching smooth and clear video 🤩 still not happy to open iQiyi to catch the drama! # tech-enabled entertainment #ZoomAI# amway # out of the box # enhance picture quality # wordsmith # iqiyi black technology @iqiyi