微信号:CtripMobile

介绍:携程无线技术公众号,分享携程在无线开发、框架、性能优化以及平台工具方面的实践经验.

携程无线APM平台 - 如何实现全球端到端性能监控

2018-01-25 20:00 Harry, Franky

作为2017年携程无线技术平台化的另一重点项目,全新APM平台改变了原有性能监控平台的设计思路,转为从全球化维度进行性能监控,以满足公司在新业务场景下的端到端性能监控需求。

早期无线APM

提到携程原有的无线APM平台,不得不提UBT平台。UBT (User Behaviour Tracking) 平台最初的开发目的是用于收集用户行为,其网络通道是自建的通道服务,和业务服务通道相隔离。刚开始一些性能相关的数据也通过UBT通道上传至后端处理,后期为了提高性能数据采集的实时性,把性能数据和普通用户行为数据进行区隔,所有性能数据都会实时上传至后端。

最初的性能监控是围绕网络性能展开,以服务为主维度进行监控(图1),这是以当时对业务服务进行集中优化为背景的。

(图1 - 早期实时网络性能监控)

为了方便Dev开发人员跟踪某个服务的性能数据,又按照版本和服务维度按照小时级聚合网络性能数据(端到端成功率、平均耗时和耗时分布,见图2),这样每个版本服务的性能优化效果很清晰:

(图2 - 小时级数据聚合)

其他的监控数据还包括网络服务请求和响应数据大小、服务错误类型分布以及服务耗时细分(图3-5),也是为具体服务的性能优化提供数据依据:

(图3-5 - 多种维度数据聚合)

后期我们又增加了定位、启动、页面加载等各类性能指标的监控,对当时的性能优化和日常运维提供了充分依据。

新APM平台

2017年下半年公司的国际化业务开始加速,原有的监控维度已不能满足技术场景的需要,我们调整了设计思路并参考了商业APM的某些设计,最终决定自研开发满足携程全球化业务场景的新APM平台。

我们将携程App基础性能指标集中为8类:网络性能、崩溃、启动加载、定位、图片、CRN、IM和VoIP(图6),基础维度包括App、系统平台、App版本和时间维度。并且只要使用携程MTP平台相关组件(参见文章)的App,都可以在APM平台中查看相关性能数据。

(图6 - 新APM平台)

网络性能

网络性能是重中之重,所以需要从不同维度进行监控:

1. 基础网络性能

对端到端网络服务成功率,平均耗时和访问量进行监控(图7),并且提供全球热门国家和热门城市细分维度。

(图7 - 基础网络性能)

2. 网络性能组合分析

提供多维度下的网络性能组合分析(图8),可以从国家、城市、运营商、接入方式这几方面实现组合监控,方便发现多种组合条件下的问题。

(图8 - 网络性能组合分析)

3. 网络入口性能

提供不同网络入口的性能聚合监控,为全球网络入口的优化提供依据(图9)。

(图9 - 网络入口性能)

4. 全球网络诊断(拨测功能)

通过App端实现对目标站点的性能拨测和诊断,包括DNS解析、TCP连接、SSL握手、Traceroute、Ping类型数据都可以采集,由于涉及特殊功能,暂不公开更多细节。

崩溃

App崩溃监控在业界已经非常成熟,难度在于崩溃数据的采集和分析能力(图10)。

(图10 - App崩溃采集)

启动加载

对App的冷启动时长、Android安装后首次启动时长和Android Bundle启动加载时长进行监控。

定位

对App的经纬度定位和城市定位的成功率、平均耗时和请求量进行监控。

图片

对App的图片下载成功率、平均耗时和下载量进行监控,和网络性能类似提供了全球热门国家和城市的细分维度。

CRN

对使用携程CRN框架开发的RN模块加载数量和平均耗时进行监控,为CRN优化提供依据。

IM和VoIP

这两项都属于业务型技术指标的监控,例如对各类IM消息和VoIP通话的成功率、平均耗时和请求量进行监控,也提供全球热门国家和城市的细分维度。

从设计思路上可以看出新APM平台把重心放在全球化维度和App核心体验性能两方面,上线后我们已经通过APM发现一些热点地区的性能问题,未来会逐步分享相关优化实践。

APM技术细节

目前新APM平台已实现100+种的Metric监控,日处理数据量约100+亿条,日写入ES(Elastic Search)数据量100+G。其处理流程如图11所示:

(图11 - APM处理流程)

  1. App客户端数据采集

  2. Storm流式计算,对数据进行滤噪和聚合

  3. 计算数据写入,以及进一步的归集

  4. ES数据存储

  5. Dashboard看板展示各种维度性能数据

更多技术细节:

技术方案选型

APM主要基于时序数据的存储和查询。我们没有采取目前比较流行的InfluxDB, 尽管在写入速度、数据存储以及查询响应上,都要优于ES。我们采用ES,主要是从携程ES平台运维成熟度、查询复杂度和系统数据量三个方面来综合考虑,ES方案比较适合当前的技术场景。

大数据量下的Trade Off

维度组合多,单单网络服务请求就可以划分为客户端版本、平台、网络类型、国家、城市等,按照10个版本,2个平台,4种网络类型,200个国家,1000个城市来计算维度,M = 10 x 2 x 4 x 200 x 1000 = 16,000,000, 按照每分钟一个Data Point,写入量就达到约30W/秒,这个数据写入量对系统压力是非常大的。

针对这个问题,我们采取2种方式进行数据处理:

  1. 降维:不是每一种监控都需要所有维度,有的仅仅是需要国家,不关注客户端版本,那我们就可以把客户端版本这个维度去掉。

  2. 部分采样:比方说城市维度,全球有上万城市,对于监控来说,按照80/20原则,我们采集20%热门城市进行监控。

噪音过滤

噪音数据会对监控造成比较大影响,比如网络请求耗时,遇到奇点数据值会达到30秒以上(受客户端超时设置等影响),这类数据在进入ES前会先进行滤噪。我们对各种需要滤噪的数据进行配置,在Storm Extract数据时进行数据处理。

结束语

技术平台自身需要生命力,APM平台也会随着业务重心的发展发生变化,希望我们的APM方案能够对读者有借鉴价值,也欢迎大家和我们交流自己的无线APM设计思路和技术方案。


作者简介:陈浩然 (Harry Chen),携程无线技术高级总监,负责无线委员会和无线基础工程团队;刘李丰 (Franky Li),携程无线基础服务和平台总监。


请关注携程无线技术公众号:CtripMobile


 
Ctrip无线技术 更多文章 携程MTP和MCD平台 - 如何支撑一年10W+次无线集成和发布 携程无线离线包增量更新方案实践 携程React Native早期工程实践和优化 携程无线持续交付平台 - MCD App定位和地图的那些坑
猜您喜欢 什么是2016年最值得学习的编程语言? java的21个技术点和知识点归纳 苹果和微信的第一次交火,有多少人彻夜未眠【4.20 热门分享回顾】 MySQL 5.7 新特性大全和未来展望 萌妹网红陪看球,欧洲杯直播技术探秘