应用性能管理(APM)综述

应用性能管理(APM)综述,第1张

APM (Application Performance Management,即应用性能管理,在分布式领域也称为分布式跟踪管理)对企业的应用系统进行实时监控,它是用于实现对应用程序性能管理和故障管理的系统化的解决方案。

随着分布式系统和微服务架构的应用和发展,应用性能管理成为系统运维管理和网络管理的一个重要方向,它能够对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本(TCO)。应用性能管理APM能够对整个企业的IT系统各个层面进行集中的性能监控,并对有可能出现的性能问题进行及时、准确的分析和处理。它能轻松地从一个IT应用系统中找到故障点,并提供有相关解决建议或方法,从而提高整体的系统性能。一个企业的关键业务应用的性能强大,可以保证企业业务应用系统的高效性和稳定性,为企业带来核心竞争力的提升。

当下成熟的互联网公司都建立有从基础设施到应用程序的全方位监控系统,力求及时发现故障进行处理并为优化程序提供性能数据支持,降低整体运维成本。国内外商业的APM有Compuware、iMaster、博睿Bonree、听云、New Relic、云智慧、OneAPM、AppDyn、Amics等。 本文主要针对Java技术体系介绍APM的框架、核心功能以及业界主流APM工具的功能特点。

随着互联网技术和应用的快速发展,应用程序本身变得越来越难以管理,因为它们从单体架构转向高度分布的、多层、多元素的分布式应用架构,应用系统在许多情况下依赖于应用程序的开发框架。APM概念框架旨在帮助企业优先考虑在IT系统架构中需要首先关注的方法,以便企业能够快速实施并全面了解五维APM模型。

APM被形象的称为应用程序的私人医生,越来越收到企业的青睐,比起通过日志方式记录关键数据显然要更加实用,APM主要包含如下核心功能:

基于Java体系的应用程序运行时的性能指标可通过Java.lang.Runtime、java.lang.Management中的方法采集。除此之外,著名的Metrics类库也能够通过这些底层技术获取Java程序性能指标。CPU利用率、内存利用率等基础数据的采集仅仅是性能监控的一部分,Metrics提供了更为丰富的五个基本度量类型,可在此基础上开发满足需求的监控指标。

大多数企业希望有一个功能完善的APM系统具有JVM性能监控、服务调用追中、监控告警功能,CAT、PinPoint、SkyWalking、Hawkular相对来讲功能更为完备,推荐企业使用。

APM( Application Performance Management

核心思想是什么? 在服务各节点彼此调用的时候,记录并传递一个应用级别的标记,这个标记可以用来关联各个服务节点之间的关系。比如两个节点之间使用 HTTP 作为请求协议的话,那么这些标记就会被加入到 HTTP 头中。因此如何传递这些标记是与节点之间使用的通讯协议有关的,有些协议就很容易加入这样的内容,但有些协议就相对困难甚至不可能,因此这一点就直接决定了实现分布式追踪系统的难度。

所有现有的解决方案,都需要如下模块的支持:

数据采集 :如何在 广度 效率 上进行数据采集 ——> Agent

数据加工 :数据统一格式的整理、调用链集合 ——> Collector

数据存储 :将计算出的指标和聚合链路信息实时保存起来 ——> Storeage

数据展示 :高颜值、多功能显示 ——> UI

Skywalking &Pinpoint 生态下的四大组件

目前的实现方式 SkyWalking 这种直接使用 javaagent 技术 修改字节码 来自动埋点;也有类似于 cat 这种直接编码进行手动埋点的,虽然方式不同,但是解决的问题相同。

相比较普通监控和日志,调用链APM等就复杂的多了。除了有大量的数据产生源,也要有相应的业务组件来支持调用链聚合和展示。看似展示的结果很直接简答,但是过程却很复杂。器复杂性主要体现在调用链数据的收集上。

关于Tracing的数据结构,为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing ( opentracing.io/ ) 规范。本质上说是一套接口定义,主流的调用链服务端实现都兼容此规范, OpenTracing 大有一统天下的架势,它在其中融合Tracing、Log、Metrics的概念。

目前看标准化是大趋势(CNCF Jaeger,SpringCloud,Elastic APM),至于国内大公司的产品,也都在主动向其靠拢(阿里的鹰眼、听云、OpenApm)。

整体来说,整个APM体系就是将大三类数据(logs、metrics、trace)应用到四大模块中(收集、加工、存储、展示),并在四个难点(程序异构,组件多样,链路完整,时效采样)上不断优化

不同数据采取不同采样数据源,过于笨重。依赖过多无法维护

https://openapm.io/landscape

根据自己的技术栈,DIY APM框架

在框架中引进 kafaka:

利用HBase来存储实时数据

16年开始完全放弃HDFS,引入流式计算 ,改有HBASE列存储。

SkyWalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计

我想你说的应该是ARM

ARM Project Manager (APM)

include ARM Debuger: 这个工具由ARM提供主要是开发程序, 编程调试ARM芯片, 有相当不错的开发环境和远端调试功能, 支持汇编和C. 它带有一个ARM自己的嵌入式 *** 作系统ARM Angel, 用户可以在它的上面开发自己的嵌入式软件, 不过这个 *** 作系统不是实时多任务的.

通过计算机串口与处理器UART相连,设置计算机的超级终端 ( Hyper Terminal ), 通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令, 用Beep报警也是经常用的. 这种调试方法是用于底层调试硬件,找出硬件存在的问题.

VxWorks 在Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP.

需要说明的是:上述方法是在没有硬件仿真器的情况下采用的,仿真器是底层调试硬件程序最好,最简便直观的办法。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7880237.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存