您现在的位置是:首页 > 文章详情

加工进化论:SPL 一键加速日志转指标

日期:2025-07-11点击:23

作者:劳贵泓(泓逸)

  1. 背景

日志服务的 SPL(Search Processing Language)自推出以来,凭借其强大的数据处理能力,已经成为众多开发者和企业实现高效数据分析的首选工具。随着业务场景的不断拓展和技术需求的日益复杂,SPL 持续迭代创新,致力于为用户提供更强大、更灵活的数据加工能力。

此次更新新增了 pack-fieldslog-to-metricmetric-to-metric 算子,大幅优化了从原始日志到结构化数据再到时序指标的转化链路。这些改进不仅显著提升了数据处理效率,还为可观测性分析、时序预测等领域提供了更广泛的应用空间。

  • pack-fields:作为 e_pack_fields 的进化形态,通过智能字段聚合构建 JSON 对象,实现数据密度的极致压缩;
  • log-to-metric:继承 e_to_metric 的核心功能,以更优雅的方式将非结构化日志转化为时序数据库的黄金标准格式;
  • metric-to-metric:为时序数据提供二次加工能力,支持标签的增删改及数据规范化,填补了链路治理的空白。
  1. 新算子功能详解

2.1 pack-fields 算子

2.1.1 场景与问题

在实际业务中,多字段分散存储常导致处理效率低下。新版 pack-fields 算子通过字段打包功能极大降低了数据传输成本,同时新增了字段修剪功能,能够高效提取符合正则表达式的 KV 结构,进一步增强数据规整的灵活性。

2.1.2 技术突破与范式升级

相较于旧版 e_pack_fields,本次迭代实现了:

  • 智能字段修剪:-ltrim='xxx'参数可动态过滤字段前缀,如将 mdc_key1=...修剪为 key1=...。

  • 兼容性进化:与 parse-kv 等算子无缝衔接,形成完整的数据规整流水线。

    场景示例:日志字段聚合

    • | parse-kv -prefix="mdc_" -regexp content, '(\w+)=(\w+)' | pack-fields -include='mdc_.*' -ltrim='mdc_' as mdc

2.1.3 示例

# 输入数据 __time__: 1614739608 rt: 123 qps: 10 host: myhost # SPL语句 * | log-to-metric -names='["rt", "qps"]' -labels='["host"]' # 输出两条Metric日志 __labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:qps __time_nano__:1614739608 __value__:10 

2.2 log-to-metric

2.2.1 场景与问题

解决非结构化日志转时序数据的链路场景,并提高转化性能。相较于旧版算子,默认使用 Hash 写入,保证了写入端的 shard 均衡,提高查询性能。

2.2.2 核心改进

在日志到时序的转换过程中,传统方案常面临数据类型歧义、标签管理混乱等问题。log-to-metric 通过以下革新实现质的飞跃:

  • 智能类型推断:自动识别数值型字段,确保 __value__ 字段的精度完整性。
  • 一键格式化:采用 key#$#value 格式构建结构化标签,标准化键值对与标签编码。
  • 通配符匹配:-wildcard 参数实现模式化字段捕获(如 request* 匹配所有以 request 开头的字段)。

2.2.3 示例

# 输入数据 request_time: 1614739608 upstream_response_time: 123456789 slbid: 123 scheme: worker # 正常转化 log-to-metric -names=["request_time", "upstream_response_time"] -labels=["slbid","scheme"] # 规范数据 log-to-metric -names=["request_time", "upstream_response_time"] -labels=["slbid","scheme"] -format # 模糊匹配 log-to-metric -wildcard -names=["request*", "upstream*"] -labels=["slbid","scheme"] # 输出数据 __labels__:slbid#$#123|schema#$#worker __name__:max_rt __time_nano__:1614739608 __value__:123 __labels__:slbid#$#123|schema#$#worker __name__:total_qps __time_nano__:1614739608 __value__:10 

2.3 metric-to-metric

2.3.1 技术痛点和解决方案

时序数据在多源采集过程中常出现:

  • 标签污染:非法字符或脏数据破坏数据一致性。
  • 命名冲突:相似指标因命名差异导致聚合错误。
  • 维度膨胀:非必要标签增加存储与查询开销。

metric-to-metric 通过以下能力实现数据治理:

  • 标签手术刀:精确控制标签的增删改(-add_labels, -del_labels, -rename_label)。
  • 格式净化器:自动清理非法字符,规范化键值对格式。
  • 维度蒸馏器:通过条件过滤保留核心指标。

2.3.2 功能创新图谱

2.3.3 示例

# 输入数据 __labels__:host#$#myhost|qps#$#10|asda$cc#$#j|ob|schema#$#|#$#|#$#xxxx __name__:rt __time_nano__:1614739608 __value__:123 # SPL语句 *|metric-to-metric -format # 输出数据 __labels__:asda_cc#$#j|host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123 # 输入数据 __labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123 # SPL语句 * | metric-to-metric -del_labels='["qps"]' # 输出数据 __labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123 
  1. 极致性能

在 SPL 新算子的开发过程中,性能优化是核心主题之一。与旧版 DSL 不同,新版 SPL 算子的设计更加注重极致性能,结合底层算法调优和高效 C++ 实现,全面提升了数据处理能力和吞吐量。

3.1 性能对比实验说明

由于旧版加工与新版 SPL 加工在工程实现上存在较大差异(如内存中的数据格式不一致),直接对比两者的性能存在一定挑战。为确保测试结果的公平性,我们采取了以下措施:

  • 数据模拟:通过 mock 生成一批内存大小相近的数据集,尽量保证输入数据的一致性。
  • 端到端测试:针对关键模块(如 log-to-metric pack-fields)进行端到端性能测试,覆盖从输入到输出的全流程。

3.2 关键性能指标对比

3.3 结论

新版的加工能力针对 log-to-metric pack-fields 两种模块进行了全面的性能优化。从测试结果可以得出以下结论:

  • 端到端性能显著提升:新版框架优化了输入、处理和输出的全流程,尤其是数据处理阶段的性能优化显著。log-to-metric 模块性能整体提升 7.17 倍,而 pack-fields 模块提升更为显著,达到 37.23 倍。
  • 处理速度的突破:两种模块的处理速度分别提升了 27.8 倍和 51.52 倍,解决了旧版中处理阶段效率不足的问题。

新版在工程实现上的优化方向非常明确且效果显著,通过性能改进全面解决了旧版的瓶颈问题,为数据加工任务提供了更强的处理能力和更高的吞吐量。

  1. 结语

此次 SPL 加工能力的迭代更新,以"性能提升"、"场景支持多样化"和"易用性优化"为核心目标,在以下几个方面取得了显著突破:

  • 极致性能与稳定性:基于灵活的加工框架、先进的编码模式及 C++ 实现的存储与计算引擎,新算子在资源复用与性能优化方面全面领先,尤其在高负载或复杂数据场景下,仍能保持稳定的写入与读取性能。新版加工算子性能较旧版普遍提升 10 倍以上,为处理海量数据和加速分析效率提供了坚实保障。
  • 使用体验升级:SPL 采用类 SQL 的语法设计,支持多级管道化操作的灵活组合,显著降低用户的使用门槛。新增的一键格式化、字段通配符匹配等功能,大幅简化了复杂加工任务的操作步骤,为用户带来更加便捷高效的开发体验。
  • 业务可观测性与扩展能力:完美支持从日志到指标的链路打通,帮助用户构建端到端的可观测体系。满足日志聚合、时序预测及异常检测等多种场景需求,为业务的日志分析、可观测性打造了一体化解决方案。

SPL 算子不仅完成了旧版 DSL 加工向更强大语法和算子形式的过渡,更将性能调优和场景适配做到了极致,解锁了时序预测和日志分析的更多可能性。作为重要的基础设施模块,SPL 加工能力将持续优化演进。未来的规划将继续聚焦通用性、性能与产品能力,为用户提供更加强大、灵活的技术支持。

点击此处,了解阿里云日志服务 SLS 产品详情

原文链接:https://my.oschina.net/u/3874284/blog/18684358
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章