共计 2891 个字符,预计需要花费 8 分钟才能阅读完成。
这篇文章给大家介绍 ARMS 在怎么 APM 工具选型中实践的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
前言
当前的系统在数字化转型需求以及互联网架构实施的影响下,越来越普遍地使用了微服务架构,我们在享受微服务带来的好处(开发效率高,独立部署,水平扩展,故障与资源隔离等等)外,也带来测试,事务,应用监控等各方面的困难。
从上图可以看出,在以分布式为主的互联网架构下,应用间的调用变得越来越复杂,我们传统使用的开发工程师主动埋点,运维人员到主机上查日志,组合调用链,监控应用的运行情况,显得越来越力不从心。
为了更好地做到应用层面的监控,包括应用运行环境的基础设施数据,系统业务调用情况,性能消耗分析,在发生性能,异常与故障问题时,能够快速定位和解决问题,诞生了很多优秀的 APM(Application Performance Management)工具。
这些 APM 工具都提供了包括指标统计信息与调用链路跟踪信息。
常见的 APM 工具
APM 工具包括指标收集与调用链收集。指标收集例如在某一段时间的请求数,异常数,错误数,响应时间 RT,IAAS 层的资源使用情况(例如 cpu, memory, IO, load, 网络),也包括 JVM 的各种运行参数(例如 各内存分区情况,gc 情况)。调用链收集包括业务请求中访问过的各应用,类,方式,在每个运行节点 / 方法上的时间消耗情况。
常见的 APM 工具有:
1、ARMS: 由阿里巴巴自研开发的一款 APM 工具。由于分布式微服务框架以阿里为主体的企业很早就开始探索,阿里集团内很早就有配套的鹰眼系统做相关的应用监控,为适应产品上云输出,阿里在 2016-08-04 的时间就以 ARMS 的产品形式正式对外提供应用监控服务。
2、开源系的 APM
u Pinpoint:基于 java 编写的开源 APM 工具,由韩国人开发贡献,功能完善,发展快,影响了很多其它的 APM 工具实现,在国内外使用比较广泛。
u Skywalking:支持 open tracing 标准,由我国的吴晟主导开发的分布式追踪,分析,告警的开源工具,当前是 Apache 旗下的开源项目,发展非常迅速,在各类开源 APM 工具里国内的使用比较广泛。
u ZipKin:支持 open tracing 标准,由 Twitter 公司开发贡献,于 2012 年的时候就开始开源发展,是比较成熟的开源 APM 工具。
u Jaeger:支持 open tracing 标准,由 Uber 公司开发贡献,是比较成熟的开源 APM 工具。
APM 工具原理
尽管这些 APM 工具功能与实现各有不同,但基本上原理都是一样的,这个原理基于 google dapper 的分布式追踪技术论文,把 APM 工具实现总体上分为两大部分:
1、对应用运行节点上进行应用埋点,在业务运行期间进行埋点数据的生成;
在这个调用链追踪技术里,还原调用链的功能主要依赖于两个 ID.
第一个 ID 是 TraceID, 这个代表一个业务调用,就好像在电商系统里发起的一个下单结算;在线教育里的一个选课流程;物流系统里的揽收;这些业务从客户触发到获得响应结果就是一个完整的请求,就是一次业务调用,它每一次的业务请求的都会获得维一的 TraceID;
第二个 ID 是 RpcID (或者称为 SpanID), 在一次业务请求中,可能经过的应用会有多过,以一个电商下单业务为例:它需要经过订单系统创建订单;支付系统接受支付;库存系统扣减产品库存;会员系统给买家进行积分处理;购物车系统会清理购物清单。这样对于业务流经的每一个应用,都有一个有层次的 RpcID, 这个 RpcID 可以认为是使用目录层级记录的,从这个 RpcID 来看,那怕它在同一个业务中被调用了多次,它的每一次进入的 RpcID 都是一样的。
依赖于 TraceID RpcID, 我们可以很方便地还原整个调用链。
6、主动诊断能力
ARMS 提供了主动诊断能力,可以通过选定具体的时间,执行主动诊断,ARMS 会分析这一段时间内的应用运行情况,自动总结这一段时间内的问题,并且结合阿里的经验,产出具体的报表。我们依据这个报表,可以加速我们的定位与优化。
7、丰富的报警能力
完善报警体系,ARMS 提供了丰富的报警规则,我们可以对相应的规则进行开启 / 关停,编辑,这样可以快速搭建报警体系。在报警通道方面,可以直接发对接钉钉 /WebHook/Email/ 短信网关等。
运维能力上的优势
1、按需监控启停管理
通过 ARMS 的管理控制台,我们可以批量在管理应用的启停,可以一键停止所有的 ARMS 监控,也可以一键启动相关应用的监控。非常符合上云的按需要使用观念。
2、动态采样率变更
在面对特殊的时间点或者异常出现机率的时候,我们希望动态调整采样率,例如通过调大采样率来捕获这些概率极少的调用链,借助 ARMS 的配置管理,我们可以非常方便地把更齐全的调用链收集起来;通过调小采样率来保证存储空间的合理使用(其它的 APM 工具在做采样率的变更时,需要应用的重新配置,启动,这不但处理起来麻烦,并且影响业务的边续性,在实际操作上很难下定决心去在运行期间中断业务去做改变采样率的变更。)
3、绑定参数的开关
虽然很多 APM 工具都可以提供绑定参数的功能。但很多时候,如果对于业务数据敏感的系统,并不希望这类 APM 工具在非必要的时候采集 SQL/API 的运行参数。所以 ARMS 在它的配置管理里提供这么一个功能非常有意义,也就是当需要收集这些运行的业务参数进行问题定位分析的时候,那么只要打开就可以了,使用完毕后,再通过把这些开关关上,那么就可以保护我们的业务数据不外泄漏出去了。
4、接入简易
可通过更简易的方式如阿里容器 ACK/EDAS/SAE 等各种非常便捷的接入方式,只需要简单的 YAML 注解或按钮即可完成接入。
5、组件稳定免运维
因为 ARMS 是商业化的产品,所以所有的组件都是不需要我们使用方运维的。如果使用开源自建,那么我们就需要对日志收集,计算清洗服务,存储产品本身进行运维,包括相应的集群规模,清理处理,扩容处理,如果在峰值过后,不进行资源回收,也会产生额外的使用浪费。
成本使用上的优势
1、ARMS 是按接入节点,接入的小时(时长)计费的,这样可以充分发挥云上产品的优势。按需要使用,按需要的应用节点付费。另外 ARMS 单纯地按照节点数来计算,并不受采样率的变动而产生变化,这样对于大采样率的应用是有一定的优势。
2、ARMS 有相应的资源包,可以通过购买资源包的方式进一步节省费用。
3、因为产品的组合因素,ARMS 如果搭配阿里云的容器(ACK)使用,计费会自动 5 折。
备注
1、开源的按照统一统计数据存 15 天,全量明细数据存 3 天计算(ARMS 的数据是全天 24 小时使用,存储 60 天,在非容器下按年包折下来的月费用。)
2、人力成本以具有开发能力的运维人员月薪 3 万计算。人力成本,主要参数变动带来的发布,后端系统的不稳定带来的效率损失,后端系统的维护操作。中大型的会做一些定制的开发(例如采样的动态配置化生效)
关于 ARMS 在怎么 APM 工具选型中实践的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。