摘要: PM是近5年来伴随着云技术、微服务架构发展起来的一个新兴监控领域。在国内外,无论是云厂商(如AWS, Azure,等)还是独立的公司(Dynatrace, Appdynamics,等),都有着非常优秀的APM产品。
APM 概述
APM 全称是 Application Performance Management, 是指对应用程序的性能和可用性的监控管理。狭义上的APM单指应用程序的监控,如应用的各接口性能和错误监控,分布式调用链路跟踪,以及其他各类用于诊断(内存,线程等)的监控信息,等;广义上的APM, 除了应用层的监控意外,还包括手机App端监控,页面端监控,容器、服务器监控,以及其他平台组件如中间件容器,数据库等层面的监控。
APM是近5年来伴随着云技术、微服务架构发展起来的一个新兴监控领域。在国内外,无论是云厂商(如AWS, Azure,等)还是独立的公司(Dynatrace, Appdynamics,等),都有着非常优秀的APM产品。
阿里云作为国内最大,世界排名前三的云厂商,其在APM领域也有很多优秀的产品提供,整个产品家族也比较全面。本文就以APM领域为例,给大家介绍一下阿里云在该领域的各个产品。
云时代应用架构简介
云时代典型的应用,如运行在阿里云的应用,其架构如下图所示。
其中:
应用一般对外提供两种客户端访问模式:移动端App访问,或基于浏览器的页面访问。客户端的监控在APM领域又被成为UEM(User Experience Management),即用户体验管理。
除了客户端访问意外,用户一般还会部署相应的业务探针,通过API来直接诶测试服务性能或进行健康检测。
对客户端直接提供服务的为后端应用服务程序。基于微服务的应用一般多个应用,分别运行在多个节点之上,应用和应用之间会有比较复杂的调用依赖关系。
后端应用一般运行在容器里,或者直接运行在(虚拟)操作系统之上,取决于用户是否进一步使用容器技术来优化开发和运维。
应用还会直接依赖各类的PaaS/SaaS云服务,如OSS,OTS, MQ, RDS等,对应用提供响应平台服务,简化应用的运维成本。
阿里云上APM领域各个产品最终目标是为了对以上各个组件进行有效监控。以下介绍对于各个组件,阿里云提供的相应的APM产品。
阿里云的APM解决方案地图
基于今天的云上的应用架构,阿里云的APM解决方案地图如下所示。
其中:
PC/移动端页面监控:该部分组件由业务实时监控的前端监控子产品来完成监控。前端监控原理是通过页面的JS埋点,从页面的调用次数和响应时间,API的调用时间和错误返回,以及页面的JS错误监控三个方面来监控页面的健康状态。不仅如此,前端监控亦支持按维度来监控页面状态,包括地域维度,网络运营商维度,浏览器种类和版本维度,等。
移动端APP监控:由移动数据分析来完成监控。移动数据分析为开发者提供一站式数据化运营服务,包括通用的多维度用户行为分析、数据开放并支持自定义分析、数据无缝对接其他数据应用产品,可帮助移动开发者实现基于大数据技术的精细化运营、提升产品质量和体验、增强用户黏性。
关于探针/压测部分:一般分为两个部分。
探针:通过外部的探针来拨测页面的监控状态。该部分可由云监控的站点监控来实现。站点监控定位于互联网网络探测的监控产品,用于通过遍布全国的互联网终端节点,发送模拟真实用户访问的探测请求,监控全国各省市运营商网络终端用户到业务服务站点的访问情况。
压测:通过模拟外部真实网络环境下的用户访问,来对线上系统进行压力测试。该部分功能可用性能测试来实现。该产品脱胎于基于服务阿里全生态多达4年以上的单链路/全链路压测平台,通过在边缘计算节点部署压测流量来模拟用户真实流量。
应用服务程序:由业务实时监控的应用监控来完成监控。应用监控前身是阿里的分布式跟踪系统-鹰眼。其原理是通过应用程序的探针埋点,对应用程序进行接口性能,链路追踪,以及错误诊断三个方面监控。其中,应用监控通过探针,亦可捕获容器和操作系统的性能和状态,因此也可用于容器和操作系统的性能监控。
操作系统:主要由云监控的主机监控来实现。云监控主机监控服务通过在服务器上安装插件,为用户提供服务器的系统监控服务。用户可以使用主机监控服务进行服务器资源使用情况的查询和排查故障时的监控数据查询。服务器无论是阿里云服务器 ECS,还是其他云厂商的服务器或物理机,都可以使用主机监控服务。
其他阿里云PaaS、SaaS服务:包括RDS, OSS, MQ, 缓存,等。该类产品本身都会自带监控,但是用户亦可从业务实时监控和云监控两个产品作为监控入口进行监控。两个产品的侧重点各有不同,其中:
业务实时监控主要从应用侧的客户端埋点着手来获取外部服务数据,其获取的性能数据为应用测真实状态,服务调用时间不仅包含外部服务的服务端响应时间,还包括中间的网络延迟等。
云监控主要从阿里云服务侧的性能数据打通来获取外部服务数据,其获取的性能数据为外部服务的服务端响应时间,其中并不包括中间的网络延时,虽不能真实反应应用侧的状态,但可用于有效排除服务端的潜在问题。
关于业务监控
关于APM领域的一些场景,还有一件事情,就是业务层面的监控,简称业务监控。为什么需要业务监控?
很多时候局部应用故障并不能直接反应对业务的影响,如某个重要级别的某些接口宕机,由于应用的一些熔断或者缓存机制,可能并不会对业务收入(交易,下单,等)造成直接大的影响。因此,IT系统监控和故障定级往往并不依赖于单个系统故障,而需要以业务指标为准。
业务层面的监控更能辅助IT系统反过来进行优化业务。如针对某个IT电商的运行分析,通过业务监控分析卖家的地域、运营商分布,以及卖家的动态库存,畅销类目实时统计,更能反过来帮助业务进行实时数据决策。
针对以上,阿里云的几款APM产品其实都不同程度支持业务层面的监控。其中:
业务实时监控的自定义监控功能可通过用户的应用日志数据,页面数据推送,甚至消息队列等不同的数据源,通过实时计算预聚合将不同维度的数据存放在时序数据库中,并为用户提供交互大盘动态可视化和报警策略,已知的用户场景包括航旅,电商,车联网的各类业务。
云监控的日志监控功能可通过对用户的日志服务中的日志内容做统计,为用户绘制出各类业务大盘。
移动数据分析的业务数据分析可根据移动端的上报日志统计移动端业务使用情况。
阿里云APM解决方案地图
以下表格对阿里云APM解决方案进行总结。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。