前端业务越来越丰富,底层架构越来越复杂,计算资源越来越多元化,单一的APM产品如何支撑构建云上应用的完整监控体系,保障平台的稳定性?近期在深圳举行的阿里云APM城市技术行活动给出了答案。
近日,主题为“应用全链路性能和诊断最佳实践”的阿里云APM城市技术行深圳站的活动在空体新媒体实验室举办,集结了应用高可用服务AHAS、性能监控ARMS和性能测试PTS的阿里云全域APM解决方案集中亮相。该活动吸引了近300位开发者和用户,大家共同交流云时代应用架构下在业务的高可用、全链路监控和云压测等方面的实践和探索。
“阿里巴巴中间件”公众号后台回复“APM深圳行”,获取部分嘉宾分享PPT
APM 全称是Application Performance Management, 指的是对应用程序的性能和可用性的监控管理,是近5年来伴随着云技术、微服务架构发展起来的一个新兴监控领域,包括手机公共网络端的站点监控、App端监控和页面端监控,用户网络端的应用服务程序、容器层的主机和操作系统层的监控,以及PaaS/SaaS端的服务监控,包括对象存储、缓存、数据库和消息等。阿里云作为国内最大的云计算厂商,覆盖了APM领域的全系列监控产品,并配备了先进的3D监控大屏,极大的降低了用户的运维复杂度。本文将为您全面回顾此次活动分享中的精彩内容。
从应用性能管理到应用高可用
西杰,阿里巴巴中间件产品专家
多年来从事应用性能管理和应用高可用性保障方向的工作,目前负责应用高可用服务的产品构建和用户体验优化。
如今,开发并上线一款应用十分方便。因为云计算提供了从最基础的计算资源如服务器网络、数据库服务、中间件PaaS平台到各种应用支撑的云管理服务,同时开源社区的迅猛发展也提供了从数据库、缓存到应用全生命流程中各种必须的组件,所以越来越多的应用开发者可以把精力放在业务创新上。
虽然从想法到实现的路径越来越短,但是应用构建完后,如何保障应用的高可用面将面临两个新的挑战:
挑战一:应用所依赖的大量的IaaS、PaaS、Cloud API和开源组件增加了应用的复杂度
阿里云应用高可用服务AHAS,针对云原生应用架构复杂、变化快的特点,推出了架构感知的功能模块,通过采集和分析操作系统及第三方标准接口,捕捉进程级的调用关系,并使用特征库算法识别进程所使用的技术组件,最后在服务器、容器和进程这三个维度上以可视化的方式展示云端的应用架构。
实现步骤非常简单,在控制台进行RAM授权后,安装探针便可实现架构感知的功能,若进一步安装Java agent(可选),还可以对应用架构中的Java应用进行动态增强,提供接口级别的性能指标和限流降级能力。
挑战二:应用被拆分为多个微服务时带来的服务之间的网络,服务强弱依赖,服务雪崩的新问题
此类新问题来源复杂、定位困难,通常需要结合应用高可用测评和防护两方面一同来应对。阿里云应用高可用服务AHAS,支持根据架构感知模块捕捉到的架构数据主动制造故障,检验应用系统及其各组件在故障下的可用性表现,从而验证应用系统的高可用能力,提前暴露故障隐患,以便针对性地应对风险。
同时,AHAS提供限流和降级的功能,通过实时监控框架的QPS(Queries per Second,每秒查询数)、线程数、响应时间、异常数等指标,并有选择地截断对这些框架的访问,从而保护应用的可用性。此外,利用 AHAS 提供的 SDK,您还可以采取更细粒度的代码级流控降级防护措施。
阿里分布式应用的全链路监控解决之道
伏羿,阿里巴巴中间件产品专家
阿里巴巴中间件云产品ARMS及ACM负责人,在企业级互联网架构和产品方面深耕多年,在微服务性能优化方面有着丰富的经验。
随着越来越多的企业开始将服务往公共云上迁移,对于云上应用性能监控的需求也越来越多。为了保证云上业务运行稳定,通常需要通过应用监控、前端监控和自定义监控等维度来构建立体化的监控体系。
应用监控
阿里云性能监控ARMS,基于分布式调用追踪的能力,结合本地调用堆栈、慢调用线程剖析和全息排查功能,解决了新业务上线时的bug频发问题、压力测试过程中的频繁出现满调用的问题和业务日常支持过程中各类问题排查的需求。同时,提供了针对各类PaaS接口的分析诊断,让各类PaaS集成无后顾之忧,并支持对应用性能监控的统计。
无需修改任何代码,只需要在 Java 应用的启动脚本中挂载一个探针,就可以对Java 应用实现全方位监控。
前端监控:
用户访问我们的业务时,整个访问过程大致可以分为三个阶段:页面生产时(Server 端状态)、页面加载时和页面运行。业务监控并无法解决用户访问页面时,因运营商网络、用户所使用的操作系统和浏览器导致的用户体验问题,此时,前端监控应运而生。
前端监控关注页面性能、页面稳定性和服务调用成功率。阿里云ARMS前端监控功能从业务视角出发,统计对业务影响最大的性能指标,并从技术视角出发,挖掘出哪个环节导致性能慢,围绕性能、地理和终端分布,来监控前端的性能问题。页面稳定性则对页面出错率排名和详情,以及错误聚类排行和详情多JS Error进行多维度管理。此外,阿里云ARMS从前端到后端进行全链路追踪,以提高服务调用率。
前不久,我们推出了ARMS的两大新功能,3D 拓扑监控大图,以及将前端的Session ID和后端的API进行关联的功能,极大的提高了用户的监控体验,并提升了复杂监控问题的定位和诊断效率。此外,阿里云ARMS价格为同类竞品价格不到十分之一,可有效降低用户在构建云上立体式监控体系的成本。
阿里云高级体验设计师舒石演示3D大屏
PTS在云压测上的探索和实践
牛兔,阿里巴巴中间件产品经理
负责钉钉、手淘等业务的高可用、稳定性工作,以及手机淘宝的内容不PaaS平台的产品设计和落地。目前主要负责阿里云性能测试PTS的产品设计和运营工作。
阿里云性能测试PTS,孵化自阿里全链路压测平台。有别于传统工具的繁复,PTS以互联网化的交互为基础,同时在产品的功能设计上更面向分布式和云化,适合更多用户的技术背景,同时更适合当前的主流技术架构,与阿里云生态紧密结合提供监控、定位等更多的价值。
以PTS+ARMS的经典组合为例,解决了原本在性能容量评估、性能瓶颈诊断和应用错误诊断方面的瓶颈。
性能容量评估
根据木桶原理,容量最小的系统也就是木桶最短的板决定了站点的能力。用户需要做的是识别短板,通过调整长短板之间的机器配比达到拉平系统水位的目的,那么即使是同样数量的机器也可以提供更大的业务吞吐量,甚至不用额外扩容。
通过PTS集成云监控和ARMS监控,不仅可以准确判断特定配置下的系统性能容量瓶颈,同时还能定位性能基线的配置短板,如系统性能、数据库瓶颈、代码问题等。
性能瓶颈诊断
除了调整容量配比,PTS +ARMS还可以通过探测和识别系统瓶颈点,以提高站点性能的方式,进一步提升同样机器数量情况下的整体容量水位。
借助PTS对cookie的友好支持,整个链路都可以通过PTS配置出对应的压力测试流量,并借助ARMS进行监控,从而观察、分析性能瓶颈。
此外,用户还可以通过PTS发现接口调用性能瓶颈拐点,一键跳转到ARMS中,并基于具体线程刨息,发现具体代码栈内的性能瓶颈拐点,从而为优化代码性能,提供代码栈级别的证据。
应用错误诊断
诊断应用错误是企业级互联网应用正式上线前的另一大场景。这类错误虽然一般不会直接影响调用耗时从而造成性能瓶颈,但是仍然会由于业务错误引发糟糕的用户体验。ARMS的经典组合,可以在压力增加时,有效发现以上的各类错误。
此外,基于PTS的施压侧监控和多维度监控特性,还可以通过ARMS集成关联到具体的错误异常详情,定位到具体错误抛出的详细代码,从而以指数级别提高压测场景下的接口错误诊断效率。
据悉,深圳是阿里云APM城市技术行继北京站之后的第二站,未来还将在上海、成都、杭州等多个城市举办。
欢迎加入企业级互联网架构交流钉钉群,群号:21704851
-> 欢迎关注“阿里巴巴中间件”,加入中间件开发者群,与技术同行。