SLS【数据加工】实现数据汇总与分发

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【数据加工】是一个可托管、高可用、可扩展的数据处理服务,广泛适用于数据的规整、富化、分发、汇总、重建索引等场景。这里详细介绍如何通过数据加工实现数据的分发与汇总,从而实现统一存储管理或分类精细化查询分析,以及存储成本优化等目的。

简介

【数据加工】是一个可托管、高可用、可扩展的数据处理服务,广泛适用于数据的规整、富化、分发、汇总、重建索引等场景。这里详细介绍如何通过数据加工实现数据的分发与汇总,从而实现统一存储管理或分类精细化查询分析,以及存储成本优化等目的。

分发与汇总

场景

数据分发

从源 logstore 中读取数据,进行加工后,根据给定条件分别输出到多个不同的目标 logstore 中。
分发.png

数据汇总

将多个源 logstore 中读取数据,汇集到同一个目标 logstore 中。需要在每一个源 logstore 中配置一个数据加工任务。
汇总.png

跨账号数据流转

通过数据加工实现跨账号数据流转,主要涉及的问题是如何授权:RAM 账号授权、STS 角色授权。请参考另一篇文章 SLS【数据加工】授权配置

跨区域数据流转

跨区域数据流转支持直接走公网,也可以选择阿里云 DCDN。请参考 数据加工 - 跨Region传输功能介绍

相关算子

  1. e_output/e_coutput:输出事件,不再继续加工。e_coutput 会对数据进行拷贝
  2. e_keep/e_drop:指定条件,保留/丢弃事件
  3. e_search:事件检查,输入查询语句,比如 e_search("field=value")
  4. e_if/e_if_else/e_switch:流程控制

案例

我们的测试服务器部署在上海和北京,对应的访问日志采集到了上海区域的 project/logstore:test-app-sh/access-log,和北京区域的project/logstore:test-app-bj/access-log,数据保存时间是30天。访问日志样例如下:

{
  "__time__": 1607655081,
  "bytes_sent": "666",
  "host": "xxxx.com.cn",
  "hostname": "xxxx.ali.dm",
  "http_referer": "https,//xxxx.com.cn/",
  "http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
  "remote_addr": "10.0.0.0",
  "remote_user": "-",
  "request_method": "GET",
  "request_protocol": "HTTP/1.1",
  "request_time": "0.035",
  "request_trace_id": "xxxx-9092-7974215498-0-1596182547.188",
  "request_uri": "/xxx/type?id=203298390015668&name=yyyy",
  "status": "200",
  "time_local": "11/Dec/2020,10,51,21",
  "upstream_addr": "10.0.0.0,8080"
}

我们需要实现两个目标:

  1. 将北京区域的访问日志汇集到上海的 logstore,做统一存储和查询分析,需要标记日志的service区域“app-bj”
  2. 拆分出返回状态码 status 为4xx(客户端错误)和5xx(服务端错误)的访问日志,保存到独立的 logstore 中,保存时间分别为90天和180天,以保证能够长时间检索。

汇集北京的数据到上海 logstore

在北京的logstore:test-app-bj/access-log 配置数据加工,脚本为:

e_set("__service__", "app-bj")
e_output("logstore-sh")

保存配置为:
C346D6CA-31D5-4DF8-9519-C0B48F4D0E1B.png

这里的“目标名称”与 e_output 所填的名称保持一致,project/logstore 选定为上海数据存储的logstore。
数据汇集后,在上海logstore可看到:
2B857FAB-60D6-4400-8FBC-3CEBC2C8E38D.png

分发错误访问日志

在access-log中,可以看到status字段的统计信息如下图,可以看出我们的数据中,返回4xx和5xx的数据占比是很小的(这是模拟数据,实际线上业务会更小),也就是说只有很少一部分数据需要长期存储。所以,根据时间条目重要程度将其分发,并做差异化存储,除了可以做精细分析,还可以实现存储成本优化。
0C8AB4D3-3570-4DD7-B85F-418839A15524.png

在上海的 logstore:test-app-bj/access-log 配置数据加工,脚本如下:

  1. 首先判断事件是否满足status>=500,如果满足则直接输出到目标access-5xx
  2. 否则继续往下执行,判断事件是否满足status>=400,如果满足则直接输出到目标access-4xx
  3. 如果都没有满足,则丢弃事件(不会输出到任何目标)
e_if(e_search("status>=500"), e_output("access-5xx"))
e_if(e_search("status>=400"), e_output("access-4xx"))
e_drop()

加工完成以后的数据如下图,在 logstore:access-5xx 里面,只保存返回状态码为5xx的访问日志。
87962448-B5FC-40BC-B89A-8615067BBACC.png

后记

以上就是使用 SLS【数据加工】功能,实现数据的分发和汇集的详细步骤。如果您在使用 SLS 过程中有任何问题,请加入我们钉钉服务群,也欢迎关注 SLS 的微信技术公众号和B站视频号。

QR.png

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
4月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
本文介绍了阿里集团A+流量分析平台的日志查询优化方案,针对万亿级日志数据的写入与查询挑战,提出基于Flink、Paimon和StarRocks的技术架构。通过Paimon存储日志数据,结合StarRocks高效计算能力,实现秒级查询性能。具体包括分桶表设计、数据缓存优化及文件大小控制等措施,解决高并发、大数据量下的查询效率问题。最终,日志查询耗时从分钟级降至秒级,显著提升业务响应速度,并为未来更低存储成本、更高性能及更多业务场景覆盖奠定基础。
|
22天前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
|
23天前
|
数据采集 运维 监控
|
5月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
468 117
|
3月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
310 4
|
10月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
328 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
11月前
|
数据采集 机器学习/深度学习 存储
使用 Python 清洗日志数据
使用 Python 清洗日志数据
184 2
|
10月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
148 0
|
12月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
474 3

热门文章

最新文章