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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
152 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
2月前
|
数据采集 机器学习/深度学习 存储
使用 Python 清洗日志数据
使用 Python 清洗日志数据
49 2
|
4月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
145 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
3月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
254 3
|
4月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
66 0
|
4月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
72 0
|
4月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
118 0
|
4月前
|
SQL 安全 测试技术
【数据守护者必备】SQL数据备份与恢复策略全解析:从全量到日志备份,手把手教你确保企业信息万无一失的实战技巧!
【8月更文挑战第31天】数据库是企业核心业务数据的基石,为防止硬件故障、软件错误或人为失误导致的数据丢失,制定可靠的备份与恢复策略至关重要。本文通过一个在线购物平台的案例,详细介绍了使用 SQL Server 进行全量备份、差异备份及事务日志备份的方法,并演示了如何利用 SQL Server Agent 实现自动化备份任务。此外,还提供了数据恢复的具体步骤和测试建议,确保数据安全与业务连续性。
221 0
|
4月前
|
SQL 监控 Oracle
Oracle数据误删不用怕,跟我来学日志挖掘
Oracle数据误删不用怕,跟我来学日志挖掘
84 0