当前位置: 首页 > 科技观察

App的贴身医生——APM

时间:2023-03-20 13:22:38 科技观察

作者|蔡佳琪,单位:中国移动智能家居运营中心实验室简介云时代,应用越来越丰富,用户数量呈爆发式增长,复杂的应用异常问题接踵而至。传统运维模式下,多个运维系统上的各种指标无法进行关联分析,需要运维人员根据经验一一排查异常。问题分析定位效率低,维护成本高。APM(ApplicationPerformanceManagement)是一种监控和管理应用程序性能和故障的云服务。为服务端应用和服务提供代码级的实时性能和业务监控,快速定位故障和瓶颈,保障系统和业务的稳定性,为用户体验保驾护航。在目前的微服务架构中,一个请求往往需要多个模块、多个中间件、多台机器的相互协助才能完成,而且这些请求既有串行的,也有并行的。我们如何确定该请求是在幕后调用的?哪些应用程序、模块、节点和调用顺序?有性能问题怎么定位?你是否也有这样的疑惑?其实APM可以满足以上所有需求。APM是一款具有强大分析工具的应用程序性能监控软件。通过拓扑图、调用链、事务分析,直观展示应用状态、调用流程、各种用户操作,快速定位问题。国内外的APM有很多,比如Zipkin、CAT、PinPoint等。今天主要给大家分享这个产品——SkyWalking,它是由国内开源爱好者吴胜开源并提交给Apache孵化的。第01部分概念和架构SkyWalking收集、分析、聚合和可视化服务和云原生基础设施,提供一种观察分布式系统的简单方法,甚至可以跨多个云平台。它是一种现代APM,可以说是专门为云原生、基于容器的分布式系统而设计的。其整体架构可分为四个部分:探针、OAP平台、存储实现和UI模块(如上图)。Probe:收集遥测数据,包括链路跟踪和性能指标,并将数据格式化为适合SkyWalking的格式。OAP:ObservabilityAnalysisPlatform是一个高度组件化的轻量级分析程序,支持数据聚合、数据分析以及驱动数据从探针流向用户界面的过程。它还支持分析,包括SkyWalking的本机跟踪和性能指标以及第三方来源。存储:通过开放的插件接口存储SkyWalking数据,支持ElasticSearch、H2或MySQL集群。UI:基于界面高度定制化的web系统,提供与概览、跟踪、告警相关的观测图,包括拓扑图、依赖图、热力图等。Part02基本原理及优势简单来说,SkyWalking采集和发送数据通过探针到链路数据采集器,OAP分析后将结果写入持久化存储,最后展示在Web可视化平台上。?那为什么选择SkyWalking?自然是因为它的诸多优点。提供Java、C#、Node.js、Go、PHP、NginxLUA等服务的自动化管理代理;并且采用插件+javaagent的形式实现span(一次性调用进程)数据的自动采集,可以对代码无侵入,插件即是可插拔的,扩展性更好;它为服务、服务实例和端点提供可观察性,用户可以查看服务和端点之间的拓扑、每个服务/服务实例/端点的性能指标,并设置警报规则。Part03SkyWalking的六大特点SkyWalking的六大特点也是本项目的核心设计目标。-可观察性SkyWalking提供多种操作模式和探针,以提供一个集成解决方案,以保持对目标系统的观察,无论它是如何部署的。-拓扑结构、性能指标和跟踪综合拓扑图是了解分布式系统的第一步。将整个系统以可读性强的布局展示出来,让运维人员可以了解服务、实例、端点、调用等,对指标有更高的要求,追踪需要使用详细的日志,让用户更好地了解这些指标。例如,当端点的延迟变长时,我们想查看最慢的轨迹来查找原因。所以,从大局到细节,这些都是需要的。SkyWalking集成了大量的特性来满足上述需求。-轻量化需要在两个方面做到轻量化。首先是探头。我们平时依赖网络传输框架,所以probe尽量小,防止依赖库冲突和虚拟机的负载压力;第二是性能。监控平台在整个项目环境中只是一个二级系统。SkyWalking采用轻量级框架构建后端核心服务,无需部署和维护大数据相关平台。我们可以看一下评测数据:可以看出无论是CPU、内存还是响应时间,使用SkyWalking带来的性能损失几乎可以忽略不计。-可插拔性SkyWalking提供了很多默认实现,但这显然是不够的,不可能适用于所有场景,所以它提供了大量特性来支持可插拔功能。-可移植性SkyWalking可以在多种环境中运行,包括:使用传统的注册中心,例如eureka。使用包含服务发现的RPC(远程过程调用)框架,例如SpringCloud。在现代基础设施中使用服务网格。使用云服务。跨云部署。-互操作性虽然SkyWalking拥有强大的社区,但不可能支持所有系统。但是,它支持与其他运维支持系统的互操作(主要是在探针方面)。SkyWalking可以接收和理解Zipkin、Jaeger、OpenTracing和OpenCensus的数据格式。这对最终用户非常有用,他们不需要切换现有的函数库。Part04各大APM“巅峰对决”总的来说,CAT作为一个综合平台,提供的监控功能更加全面;Zipkin是Twitter开源的调用链分析工具,非常轻量级,易于使用和部署;Pinpoint和SkyWalking专注于链路和性能监控,具有细粒度的跟踪数据和强大的用户界面。Part05小结随着分布式系统和微服务架构的应用和发展,应用性能管理成为系统运维管理和网络管理的重要方向。它可以很容易地发现应用系统中的故障点,并提供相关的解决建议或方法,以提高系统的整体性能。目前SkyWalking增长势头强劲,社区活跃,文档相对完善,无语言障碍,支持多语言探针,支持众多框架,众多开发者不断向社区提供更多插件,无缝支持更多组件连接到SkyWalking。