正文
7)高性能。
Prometheus单一实例即可处理数以百计的监控指标,每秒处理数十万的数据,在数据采集和查询方面有着优异的性能表现。
由于采集的数据有可能丢失,Prometheus并不适合对采集数据要求100%准确的场景。实际上,对于监控系统的场景,偶尔的数据丢失完全可以接受。
爱奇艺号是爱奇艺专注视频内容的创作、分发和变现的平台,承载了自媒体、网大、网剧、儿童、动漫、知识、网络综艺、纪录片、文学、轻小说、漫画等内容,是爱奇艺内容生态的重要一环。
爱奇艺号整体采用微服务架构,内部依据功能、领域等角度划分为不同的微服务,外部流量先经DNS、QLB、前置机、网关等层完成统一鉴权、负载均衡、限流等操作后路由到系统内部不同的微服务实例。系统内部微服务除专有的MySQL、Redis、MQ等资源外,共享服务注册/发现、配置中心等服务治理能力。
系统整体架构,如下图所示:
爱奇艺号服务于内容创作者,服务质量直接决定了创作者的使用体验,影响内容创作的热情,进而影响内容生态的健康,因此对服务质量有很高要求。同时,爱奇艺号作为前台业务,依赖公司许多的内部服务和中台服务,服务的稳定性直接影响了自身服务的质量。
基于爱奇艺号的业务特点,在搭建微服务监控系统时,重点关注自身服务接口和第三方服务接口的监控。
我们基
于Prometheus搭建了适合自身业务特点的微服务监控系统。Prometheus已提供非常丰富的组件,同时我们也开发了部分组件,满足我们的监控需求。
微服务监控系统的整体结构,如下图所示:
-
使用Spring Boot Actuator和Micrometer采集服务的监控数据,并暴露给Prometheus拉取;
-
开发了第三方服务接口的监控数据采集工具;
-
开发了qae-monitor组件,采集服务运行时容器的监控数据;
-
开发了基于文件的动态服务发现,给Prometheus提供拉取目标;
-
开发了Alert proxy服务,实现了报警内容投递到统一报警平台;
-
使用Prometheus联邦集群模式部署,并使用Grafana用于监控数据展示。
监控系统一般采用分层的方式划分监控对象。在我们的监控系统中,主要关注以下几种类型的监控对象:
-
容器环境监控
,主要指服务所处运行环境的一些监控数据;
-
应用服务监控
,主要指服务本身的基础数据指标,提现服务自身的运行状况;
-
第三方接口监控
,主要指调用其他外部服务接口的情况。
对于应用服务和第三方接口监控,我们常用的指标包括:响应时间、请求量QPS、成功率。
1)容器环境监控
微服务应用部署在爱奇艺内部的应用云平台(QAE)上。在云平台中,一台主机上会同时存在多个容器实例,采用主机监控的方式采集到的资源使用和性能特征实际上是主机的指标数据,而非运行的容器。
Prometheus虽然支持使用cAdvisor进行容器监控,但cAdvisor需要安装在主机上,而QAE是一个公共平台,自行安装部署其他软件并不现实。好在QAE提供了开放的API,很好的解决了这一问题。