开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:消息队列和应用工具产品体系-ARMS 服务的产品功能】
课程地址:https://edu.aliyun.com/course/3112075/lesson/19050
消息队列和应用工具产品体系-ARMS 服务的产品功能
内容介绍
一、业务实时监控服务
二、日志采集
三、日志传输
四、日志分析
五、ARMS 的发展历程
六、ARMS 产品的整体功能及特点
一、业务实时监控服务
业务实时监控服务 ARMS 是一款阿里云提供的 SAS 平台的应用性能管理的 APM 产品,结合了业界先进的分布式应用监控,和链路追踪理论,与阿里巴巴集团大量的内部实践相结合能够实现全站式性能监控和端到端的全链路追踪诊断,从而提供更加全面的面相应用的业务实时监控功能。
ARMS 从日志采集、日志传输到日志分析方面,提供了高度一体化的云上解决方案,用户可以不在使用复杂的开元组件,即可快速实现业务监控功能。
二、日志采集
在日志采集方面, ARMS 支持 ECS Log 、 MQ 、 EDAS 、 DB 、
Loghub 等多个数据采集元,具有完备的日志接入方案,日志接入
成本极低。
三、日志分析
在日志分析方面, ARMS 支持可视化的流计算制定接口,因此使用者可以任务可视化编辑的方式来定义数据的实时处理,数据存储,数据展示分析,数据 API 和报警任务,从而大幅度提升业务监控的制定效率,较低使用者的门槛。
四、数据展示
在数据展示方面, ARMS 内置报表大屏制定组件以及数据持久化组件,便于开发者对接各种业务场景。使用 ARMS监控功能开发者无需修改代码只需要为应用安装一个探针, ARMS 就能对应用进行全方位的监控,从而快速定位出错接口和慢接口。重现调用参数,发现系统瓶颈大幅度提升线上问题的诊断效率。 ARMS的业务自定义监控可以按需深度制定具有业务属性的实时监控报警和大盘。业务场景包括电商场景,物流场景,行里场景等。除了自定义监控外, ARMS 还有可直接使用的预设监控场景。包括前端监控, APP 监控等。通过前端监控, APP 监控等预设场景可以直接进行业务监控。其中前端监控可以按照地域,渠道,链接等维度实时反映用户页面的浏览性能和错误。另外, ARMS 还提供了自定义监控,前端监控,应用监控为一体的统一报警和报表平台。
五、ARMS 的发展历程
ARMS —开始是作为中间的日志处理层为 Eagleeye 服务的。经过8年的发展, ARMS 现有20+场景,数百不同的业务大盘,近千台服务器在数十集群上。
ARMS 最初应对阿里内部分布式架构的数据和业务统计而设计的。在 IOE 架构之前,单机版烟囱式架构的调用监控并没有太大难度。在 IOE 之后,由于所有的应用都是分布式调用,如何基于多台机器统计调用情况成为开发人员的难点。
此难点的困难之处在于:调用情况需要从多台机器上做聚合,而且还要保证计算的实时性。因此在2010年左右,阿里巴巴启动了 Eagle eye 鹰眼系统, Eagle eye 项目解决的首要问题是分布式调用的实施聚合统计,而ARMS开始是作为中间的日志处理层为 Eagle eye 服务的, ARMS 的架构基于流逝计算框架以满足实时性,以统计单个应用的各种服务调用为例。
首先, ARMS 会收集个服务特定时间内的调用次数和特定时间内被调用最多的服务。对于每一个收集到的数据在 ARMS 的实施计算里都会有对应的计算模块,当数据进去之后,会落到各个相应的逻辑模块中。通过程序分析之后,以列式存储的方式进行入库,形成 OLAPQ。
这样做的两个优点是:
1.对业务无切入式改造
2.使用无限横向扩展架构
在服务调用统计功能成功实现之后各类监控的需求接踵而至,导致开发团队的流计算制定业务应接不暇。除了要统计服务数据,还需统计内存, CPU 甚至容器内的指针还有各种各样的三方应用。每个业务都要写流逝计算程序,业务方的接入效率会非常低下。于是 ARMS 业务组对流逝计算流程进行了抽象和改造。改造之后,当业务接入 ARMS 时只需在已经抽象出来的积木块中通过浏览器的方式填筑各式各样的参数逻辑,即可快速实现业务接入。其结果就是将流逝计算的接入时间从几天降低至几分钟。
随着计算集群的扩展,计算节点失效成为业务统计中的常态,为了解决此问题, ARMS 提出了新的解决方法。在日志对立中记录批次,计算集群时刻监控每一批次的计算状态,一旦遇到节点失效, ARMS 会在恢复节点重新计算此批次。随着 ARMS 应用场景向交易,封控等到高数据可靠性领域扩展,业务段数据源的不可靠和业务的高可靠要求,为 ARMS 带来了数据一致性的新挑战。
在此情况下, ARMS 通过存储成后台的数据mark 机制,保证最终数据的一致性。数据从流计算进来达标到后端存储时 ARMS 能在此过程中自动识别数据不可控的情况,一旦出现此状况, ARMS 不会丢失数据,而会将数据放到客户端内,在下次提交时一并提交。同时通过后台的 mark 机制去掉重复的数据,这样就可以从原端避免异常事件的发生。 ARMS 监控系统在存储层面提供了 MOLAP 的能力,对同一类交易数据支持按时间聚合程序查询,按类目方式聚合查询,按交易地域方式查询,同时支持按地域和类目方式上尊,下尊选尊等操作。
在实时计算中,如何避免当前时间的数据成为局部存储热点也是开发者需要面对的难点。 ARMS 提供了基于海量可扩展存储层的热点分散,保障了存储层的高效访问。经过四年的打磨,阿里内部的 ARMS 现有20多个场景,数百个不同的业务大盘,近千台服务器在数十个集群上。最大集群数据规模处理量达到每秒一万五千 mb 阿里集团内部超过一千个线上任务,涵盖了商品中心,交易,菜鸟,卖家中心,航宇等业务。
六、ARMS 产品的整体功能及特点
包括数据接入、数据计算、数据存储、大盘展示和报警,以及下游 API 对接等环节用户只需要关心三件事:数据从哪里来、实时计算流程怎么编排、数据该怎么用.
1.多方位的前端监控功能
通过高时效性能监控,实时感知用户实际访问网站的响应时间和错误率,多维度监控分析可以基于地域,运营商,浏览器等多个维度分析用户的访问速度和错误,而页面的异常监控和有效性监控可以用来诊断应用的大量数据调用请求的性能和成功率。
2.高效易用的应用监控
通过对 RPC 调用信息及进行动态分析和智能计算可以自动生成分布式应用间的调用关系,实现应用拓扑的自我发现。同时根据应用的响应时间,请求数,错误率等指标,实现常用诊断场景下的指标下端分析,也可以按应用,摄入数据库等多个维度查看数据指标。基于调用数据的超时和异常分析,可以实现异常事物和慢数捕捉,并且有效自定关联到对应接口,如: SQL , mq 等。而智能收集基于调用链的问题事物快帐,通过排查详细事物数据,明确异常或者错误的来源。
3.功能丰富的自定义监控
支持各类实时数据元,如日志, mq , loghub 等丰富的数据元,灵活的实施计算,存储编排,支持用户根据自定义维度和计算方式自行编排实时计算和存储方式,监控数据集可快速对接 ARMS 报警和大盘平台以提供各类场景的监控能力。同时 ARMS 提供了大量丰富的参考模版,如 Nginx 监控,异常监控,电商监控等。
4.灵活的实时计算任务定义
支持拖拽式的实施计算模块编程,支持绝大多数语言逻辑,如通用数学计算,正则匹配, if else 等,同时还支持丰富的实时计算和存储算子,包括 Sam , kand , max , mini , sample , topn , contdistens 等。
5.稳定高效的时序和事件存储
通过在线持续聚合数据,保证数据容量可控,智能分级存储存放策略,支持最多三级的下端作业。
6.可定制的报警设置
支持设置任意连续时间的滑动平均最大值报警,支持自定义报警内容,丰富的报警通道。如邮件,短信,钉钉等
7.灵活的交互大盘定制
丰富的展示控件,如柱线图,热力图,饼图,翻牌器等。支持大屏共享,全屏显示等。
8.灵活对接各类下游应用
支持 Java , python , pr , sayshap 等API 的对接,支持 DataV 等其他大屏展示工具的对接。