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

GartnerAPM魔力象限技术解读——全存储?不!按需存储?YES

时间:2023-03-12 02:48:45 科技观察

调用链记录了完整的请求状态和流量信息,是一个巨大的数据宝库。但是其庞大的数据量带来的成本和性能问题是每一个真正应用Tracing的同学都无法回避的问题。如何以最低的成本按需记录最有价值的链接及其关联数据,是本文探讨的主要课题。核心关键词是:边缘计算+冷热数据分离。如果您正面临全存储调用链成本高、采样后找不到数据或图表不准确等问题,请耐心阅读本文,相信会给您带来一些启发。边缘计算,记录更有价值的数据边缘计算,顾名思义,就是在边缘节点上进行数据计算。如果顺势而为,也可以称为“计算左移”。在网络带宽受限、传输开销和全球数据热点难以解决的背景下,边缘计算是寻找成本与价值平衡最优解的有效方法。Tracing领域最常用的边缘计算是用户进程内的数据过滤和分析。在公有云环境下,用户集群或私有网络内的数据处理也属于边缘计算,可以节省大量公网传输开销,分散全球数据计算的压力。此外,从数据的角度来看,边缘计算一方面可以筛选出更多有价值的数据,另一方面可以通过处理提炼出数据的深层价值,以最低的成本记录下最有价值的数据。过滤更有价值的数据链路数据的价值分布是不均匀的。据不完全统计,调用链的实际查询率不到百万分之一。数据的全量存储不仅会造成巨大的成本浪费,还会显着影响整个数据链路的性能和稳定性。下面列出了两种常见的筛选策略。基于链接数据特征的调用链采样和报告(Tag-basedSampling)。例如错误/慢调用的全采样、特定业务每秒前N个采样、特定业务场景的自定义采样等。下图为阿里云ARMS的自定义采样配置页面。用户可以根据自己的需要自由定制存储策略。实际存储成本通常不到原始数据的5%。异常场景自动保留关联数据场景。在诊断问题根源时,除了调用链之外,我们还需要结合日志、异常堆栈、耗时的本地方法、内存快照等相关信息进行综合判断。如果每个请求的关联信息都被记录下来,系统很可能会崩溃。因此,边缘计算能否在异常场景下自动保留快照,是衡量Tracing产品优劣的重要标准之一。如下图所示,阿里云ARMS产品提供了慢调用线程分析、内存异常HeapDump等能力。无论何种筛选策略,其核心思想都是通过边缘节点数据计算,丢弃无用或低价值数据,保留异常站点或满足特定条件的高价值数据。这种基于数据价值的选择性上报策略远比全量数据上报更具成本效益,可能成为未来Tracing的主流趋势。提取数据价值除了数据筛选,在边缘节点对数据进行预聚合、压缩等处理,在满足用户需求的同时,也能有效节省传输和存储成本。预聚合统计:客户端预聚合最大的好处是在不损失数据准确性的情况下,大大减少了数据上报量。比如在对调用链的1%进行采样后,依然可以提供精准的服务概览/上下游监控告警能力。数据压缩:对重复出现的长文本(如异常堆栈和SQL语句)进行压缩和编码,也可以有效降低网络开销。结合非关键字段混淆效果更好。冷热数据分离,低成本满足聚合后分析个性化需求3秒以上和源码分发,这种个性化的聚合后分析规则不可能面面俱到。而当我们无法预先定义分析规则时,似乎只能使用成本极高的全原始数据存储。没有优化的空间吗?答案是肯定的。下面介绍一种低成本的解决聚合后分析问题的方案——冷热数据分离。冷热数据分离方案简述冷热数据分离的价值基础是用户的查询行为及时满足局部性原则。简单的理解就是最近的数据最常被查询,冷的数据很少被查询到。例如,由于问题诊断的及时性,50%以上的链接查询分析发生在30分钟以内,而7天后的链接查询通常集中在错误和慢速的调用链上。建立了理论基础,然后讨论了如何实现冷热数据分离。首先,热点数据具有时效性。如果只需要记录最近一段时间的热点数据,对存储空间的要求就会大大降低。另外,在公有云环境下,不同用户的数据自然是隔离的。因此,用户VPC内的热点数据计算存储方案具有更好的性价比。其次,冷数据的查询具有方向性,可以通过不同的采样策略筛选出符合诊断要求的冷数据进行持久化存储。比如错慢采样,特定业务场景的采样等。由于冷数据存储周期长,对稳定性要求高,可以考虑在Region内统一管理。综上所述,热点数据存储周期短,成本低,但可以满足实时全量聚合后分析的需要;而冷数据经过精准采样后,总数据量大幅缩减,通常仅为原始数据量的1%~10%,能够满足大部分场景的诊断需求。两者的结合实现了成本与体验平衡的最优方案。ARMS、Datadog、Lightstep等国内外领先的APM产品均采用冷热数据分离的存储方案。热点数据实时全分析链路明细数据包含最完整最丰富的通话信息。APM领域最常用的视图,如服务面板、上下游依赖、应用拓扑等,都是基于链路明细数据统计的。基于链路明细数据的聚合后分析,可以根据用户的个性化需求更有效地定位问题。然而,聚合后分析最大的挑战是基于全量数据进行统计,否则会出现样本偏斜,最终结论与实际相差甚远。阿里云ARMS作为唯一入选2021年GartnerAPM魔力象限的中国云厂商,提供了30分钟内对热点数据进行全量分析的能力,并可以实现各种条件下的过滤和聚合,如下图所示:数据持久化抽样分析全调用链的持久化存储成本非常高,而且如前所述,调用链30分钟后的实际查询率不到百万分之一,而且大部分查询都集中在错误的慢调用链,或者符合特定业务特性的链相信经常查链接问题的同学会有同感。因此,我们应该只保留少量满足精确采样规则的调用链,这样可以大大节省冷数据持久化存储的成本。那么应该如何实现精准采样呢?业界常用的方法主要分为Head-basedSampling和Tail-basedSampling。头部采样一般在客户端代理等边缘节点上进行,例如基于接口服务的限流采样或定比例采样;而尾部采样通常是根据热数据的全量进行过滤,例如错误和缓慢的全采样。理想的采样策略应该只存储真正需要查询的数据。APM产品需要提供灵活的采样策略配置能力和最佳实践,用户可以根据自己的业务场景进行自适应调整。结语当越来越多的企业和应用上云,公有云集群规模爆发式增长,“成本”将成为企业上云的关键因素。在云原生时代,充分利用边缘节点的计算和存储能力,结合冷热数据分离实现高性价比的数据价值探索,逐渐成为APM领域的主流。全数据报告、存储和再分析的传统解决方案将面临越来越多的挑战。未来如何,让我们拭目以待。推荐产品阿里云ARMS——唯一入选2021年GartnerAPM魔力象限追踪分析的中国云厂商——兼容OpenTelemetry规范,支持7种开发语言