赞
踩
本文首发于微信公众号“Shopee技术团队”
MDAP(Multiple Dimension Analysis Platform)是一个多维实时监控分析平台,能够支持业务应用侧自定义指标的监控与分析,并在自定义监控分析能力上,实现了对移动端应用性能数据的专项监控分析能力,以满足业务日益增长的数据监控分析需求。
本文作为系列文章的第一篇,将介绍 MDAP 平台如何实现移动端可观测数据监控分析,并提升监控性能与分析精准度。
随着 Shopee 业务不断发展,为了更加了解终端用户使用的体验,更好地决策产品优化特性,各业务团队内部涌现出大量对线上终端数据可观测的需求。例如:终端的页面转化率、用户留存率、终端的性能监控(包括 CPU 使用率、内存使用率、网络流量等),以及终端稳定性监控(崩溃、ANR)等。
而业务各项转化率、留存率等指标除了会受到产品功能、商业推广、应用模式等影响外,更多会受到应用自身的性能以及稳定性影响。亚马逊的统计显示,网页每 100 毫秒的延迟就会使他们损失 1% 的销售额;同时谷歌也指出,搜索页面生成时间多出 0.5 秒,流量就会减少 20%。所以,对线上应用的性能及稳定性监控就显得极为重要。
MDAP(Multiple Dimension Analysis Platform)作为一个多维实时监控分析平台,能够支持业务应用侧自定义指标的监控与分析,并在自定义监控分析能力上,实现了对移动端应用性能数据的专项监控分析能力,以满足业务日益增长的数据监控分析需求。本文将介绍 MDAP 平台如何实现移动端可观测数据监控分析,并提升监控性能与分析精准度。
对于应用性能管理,全球权威的 IT 研究与顾问咨询机构 Gartner 将其定义为,包含数字体验监控(DEM);应用程序发现、跟踪及诊断(ADTD); 以及面向技术人员的人工智能运维(AIOps)。
目前,业界对后台的数据监控在以上三个维度都拥有相对成熟的解决方案,例如 DEM 指标采集使用 Promethues,ADTD 使用 ELK 以及 opentracing 的方案等。
然而,终端侧并未有体系化的解决方案,能够指引行业人员构建三个维度象限下的可观测数据分析系统。如果要构建一套终端数据监控分析系统,应该如何实现?从以上三个维度出发,需要分别思考以下问题:
为了解决以上问题,MDAP 整体设计上包含了可观测数据的采集和后台分析处理服务。整体服务架构如下图所示,后台架构服务设计上遵照 DDD 设计思想做了微服务化设计,并能利用 Helm 实现在 K8s 集群中一键部署,从而满足一些业务快速私有化部署的需求。
1)MDAP Backend
作为微服务集群,对上报的各个监控的数据计算转换,对脏数据过滤,或者对上报的文件做解析与分析,挖掘上报文件中的问题点。例如从内存快照中找到内存泄漏、对象重复、对象过大等内存使用异常的问题。使用 Inteillgentize 生成的数据模型,对分析出的问题类别做智能打标分类。
2)DI Platform
构建在 Shopee 的 Data Infra 上,通过 Flink 流式拉取数据清洗或做简单的预计算后落入存储中,并通过 Spark 对存储的详细数据按照小时、天或者周的维度做上卷聚合,输出维度指标数据,提供页面指标实时查询使用。
3)Intelligentize
作为智能运算服务,利用 Spark ML 等大数据分析套件,对 DI Platform 中经过预处理的数据做半监督或无监督学习,生成数据模型,提供给微服务集群作为标签分类的依据。
4)Boussole
作为实时分析引擎,从数据源拉取数据并经过前置清洗,通过用户在平台中定义的指标和维度以及汇聚方式实时聚合后,将产生的结果数据落入持久化存储,用户通过平台前端配置的相关视图及 Dashboard 实时观测这些最新汇聚出的数据结果,这些结果做为告警的数据源,降低反复查询 ClickHouse 等数据库的频度,减少对页面访问的干扰影响。详情可以参考文章《Boussole Engine:针对多维时序数据实现的实时分析引擎》。
在采集数据前先要划分数据的类型与用途,不同用途的数据采集方式、存储方式、产品形态各有不同的方案。参照分布式监控,监控的数据可以分为 Metrics、Logging、Tracing 三类,用维恩图(Venn diagram)可以表现为下图形式。
1)Metric
Metric 作为监控指标是原子的,每个都是一个逻辑计量单元,大多作为时序数据。在终端中,Metric 可以包含 CPU 使用率、内存使用率、网络流量等系统或者业务指标。
针对其时序数据的数据,MDAP 使用 ClickHouse 来做存储,方便数据做实时查询分析。提供趋势图、日环比、周环比、维度数据、统计报表。分布图等分析面板能够协助用户快速找到问题维度,进而做单维度的下钻分析,缩小问题的排查范围。另外,数据指标可以作为告警的来源,作为发版后或者日常指标监控的标准。
2)Logging
作为一些离散的(不连续的)事件,Logging 包含着事件内部
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。