传音控股作为“非洲手机之王”,据IDC报告显示2021年占据非洲智能手机出货量的47.9%。传音移动互联广告平台作为传音控股的重要业务之一,是非洲最为主流的营销平台之一。
在技术架构方面,传音控股通过SpringCloud进行全面微服务化。同时,使用数据库、中间件等众多PaaS服务,应用运行在阿里云容器服务K8S之上,并分布在欧洲、亚洲等多个 region ,真正实现多 region 服务体系。对于该套体系而言,要构建完整可观测体系,挑战非常大:
首先,观测对象非常多:
观测对象分布在不同技术栈、架构中,要对于众多观测对象实现全覆盖且有所侧重,是非常大的挑战。
其次,调用链路复杂:
由于已经使用微服务,因此业务结构非常复杂,调用链路复杂,出现问题难以排查。
最后,业务快速上线带来的运维工作量:
新业务上线频率极快,如果新上线服务无法自动化地接入这一套可观测体系,会带来非常大的运维工作量。
要构建观测系统,首先要梳理出一套指标体系,进行分层设计,同时自上而下对指标体系进行关联。
其次,传音希望通过告警驱动整个运维流程,需要在IM即时通讯工具内完成事件闭环,包括告警收取、认领处理、分析、关闭全流程。
另外,传音的系统非常复杂,因此,传统登录到机器查看日志排查问题的方式无法实现,而是需要将全链路追踪作为诊断的主要手段。在此情况下,整个观测系统必须与链路系统打通。同时,我们希望观测系统基于开源标准进行构建,指标符合Prometheus格式 ,tracing 符合 OpenTelemetry标准,服务界面通过 Grafana 大盘进行统一呈现。
相比于自建,传音更倾向于使用阿里云上的成熟云服务,因为云服务带来的全托管、免运维、稳定高效的优势具有非常大的吸引力。
基于以上业务目标与需求,我们开始进入可观测系统落地实施。
首先,进行指标体系梳理,阿里云与可观测团队将所有指标进行拆解分层,分为资源层、容器层、服务层以及应用层。资源层最主要关注节点上的资源水位,包括 CPU、memory、网络带宽等。容器层分为工作负载、控制面以及容器的关键事件,对于产生的关键指标和事件进行收归。服务层针对应用链路中涉及的负载均衡SLB 、云数据库 Redis、MQ等可用性以及性能指标进行梳理。应用层主要针对应用健康度以及应用性能本身,包括黄金三指标、运行的JVM 性能等进行梳理。
基于以上指标体系,传音建立观测系统的过程中,选择使用阿里云上Prometheus服务,与阿里云容器服务进行了天然集成,可以采集阿里云K8S 集群的关键性能指标,开箱即用。
容器服务运行的应用指标也进行默认集成,将应用层的黄金三指标等非常关键的指标收归至Prometheus,同时基于Prometheus和云监控开箱即用的能力,将链路上关键云服务指标收归至Prometheus。
再结合阿里云Grafana服务 真正实现全局多维度大盘展现。比如,业务关键指标、技术的可观测大盘、关键的云服务大盘及应用性能均基于 Grafana 呈现。同时,数据源分布在欧洲、亚洲多个 region ,基于 Grafana 的全球数据源加速能力,使国内同事也可以直接查看全球的监控状况,真正实现一套观测产品全球使用。
得益于指标体系的梳理,每一层的关键指标均已收归到Prometheus服务。而且Prometheus服务提供开箱即用的基于 PromQL的告警规则,极大减轻了传音的运维工作量。
所有发出的告警规则会被发送至阿里云上的应用性能监控 ARMS 智能平台。基于智能告警平台的智能降噪、智能分组、压缩等能力,进一步解决了传音此前告警风暴问题,使得告警更准确、更高效。最终的告警会对接到传音常用的飞书平台,实现告警认领、告警追踪、告警分析、关闭等完整流程。
传音原先告警模式为告警至个人,非常容易丢失。而如今转变为告警至群,通过群体协作,同事之间互相协作、互相提醒,更有利于告警及时处理。
传音新上的服务无法自动接入原先的链路追踪系统,这会导致极大运维工作量,因此使用阿里云上的应用监控服务进行了替换。应用监控服务与容器服务有着天然集成,可以针对于容器服务需要监控的应用自动注入 Java 探针,将链路、APM数据采集至阿里云上的应用监控服务,同时指标也会收归至阿里云Prometheus,真正实现从指标到链路以及链路中的关键报错日志的完全关联。
同时,ARMS应用监控也提供全局拓扑,可以查看整个服务关联情况、调用情况。新服务上线后,可以非常方便地查看服务的健康状况、依赖等。发现问题节点之后,可以深入拉起全链路的调用链追踪,并定位至代码级别。
阿里云和传音一起构建该套可观测系统-- 覆盖资源层、容器层、 PaaS层、应用层的全球多地域统一的可观测系统。在实施过程中,我们基于阿里云Prometheus服务将云上应用层指标、云服务指标、K8S 监控指标收归至Prometheus。
通过阿里云 ARMS 应用监控构建了全链路追踪系统,同时基于阿里云 Grafana 提供可观测的统一视图,再对接至后面的ARMS 告警平台,最终对接至飞书群,真正实现了再告警群内实现协作闭环,真正实现 ChatOps的运维新范式。
后续,传音计划引入异常检测、根因定位等AIOps能力,进一步提效,提高问题诊断效率。同时会在用户侧加入用户体验的监控能力,更好地区分是用户侧的问题还是数据中心的问题。我们也会将可观测能力前置至开发态、测试态,与 CI/CD 流程结合,与压测环境结合,更好地保证应用服务地交付质量。同时,我们也会探索基于可观测数据做FinOps、做应用安全,更好地利用可观测数据,发挥业务价值。
最终,我们希望能够实现面向业务运维的可观测系统。