日志服务数据加工:概念篇

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
文件存储 NAS,50GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 本篇介绍日志服务数据加工的相关概念

基本概念

ETL, Data Transformation

ETL (Extract, Transform, Load)是数据分析领域中数据加载、转换、输出的的意思,日志服务中主要加载源Logstore与输出到其他Logstore, 也会加载OSS, RDS, 其他Logstore做数据富化. 但主要是对数据进行Data Transformation的工作.

事件、数据、日志

在数据加工的上下文中, 事件、数据都是表示日志, 例如事件时间就是日志时间,丢弃事件字段函数drop_event_fields就是用于丢弃特定日志字段.

日志时间

日志自身的时间, 指日志表示的事件所发生的时间. 也称事件时间. 在日志中的保留字段为__time__,一般由日志中的时间信息直接提取生成。整型,Unix标准时间格式。单位为秒,表示从1970-1-1 00:00:00 UTC计算起的秒数。

日志接收时间

日志到达服务器被接收时的时间, 默认不保存在日志中, 但是如果数据logstore开启了记录外网IP, 会保留在日志标签字段的__receive_time__上, 数据加工中的完整字段名是__tag__:__receive_time__. 中, 类型整型,Unix标准时间格式。单位为秒,表示从1970-1-1 00:00:00 UTC计算起的秒数。

注意: 数据加工日志作业的配置项高级选项时间范围, 是以日志接收时间为准的.

日志时间 vs. 日志接收时间

大部分场景下, 日志是实时发送给日志服务的, 因此日志的时间与接收日志的基本相同或者接近. 如果日志不是实时发送的, 日志时间与接收时间会不一致, 这种情况一般发生在导入历史时间的情况. 例如通过SDK导入了过去30天的日志. 那么日志时间就是上个月的, 而日志接收时间就是当前.

日志标签

日志的标签TAG,包括:

  • 用户自定义标签:您通过API PutLogs写入数据时添加的标签。
  • 系统标签:服务端为您添加的标签,包括__client_ip__和__receive_time__。
    在数据加工中, 标签字段以__tag__:作为前缀.

具体参考日志字段

配置相关

源Logstore

数据加工中, 读取数据的logstore再进行加工的是源logstore. 一个作业只支持一个源logstore. 但可以对一个源logstore配置多个加工作业.

目标Logstore

数据加工中数据写入的logstore叫目标logstore. 一个作业可以是一个或者多个. 可以是静态配置的, 也可以是动态配置的.

LOG DSL

日志服务领域专用语言LOG DSL (Domain Specific Language)是日志服务数据加工使用的编排语言, 一种Python兼容的脚本语言. LOG DSL基于Python提供内置200个函数简化常见数据加工模式. 也支持用户自由定义的Python扩展(目前仅针对特定客户开放). 详情请参考日志服务DSL

加工规则

也叫加工脚本, 是使用ETL语言编排的逻辑代码集合.

加工作业

由源logstore、目标logstore、加工规则以及其他配置项如加工时间范围、权限参数等组成的任务, 叫做加工作业. 也是数据加工的最小调度单元.

规则相关

资源

除了数据源的logstore外的, 数据加工中会引用的第三方数据源叫做资源做某种配置或者富化, 包括但不限于本地资源, OSS, 外部Logstore, RDS等.

维表

用于做数据富化的数据某些维度信息的外部表格叫做维表. 例如公司用户账户列表, 产品列表, 地理位置信息库等. 维表可能会动态更新, 维表一般存在于资源中.

富化、映射

日志包含的信息不全时, 需要借助外部信息进行完善. 对日志一个或多个字段通过映射完善出更多信息的过程叫做富化或者映射.

例如某个请求包含HTTP状态码status, 可以通过如下表格富化出新字段HTTP状态描述status_desc:

status status_desc
200 成功
300 跳转
400 权限错误
500 服务器错误

或者源数据中有user_id字段, 使用外部账户维表, 映射出其对应用户名、性别、注册时间、邮箱等信息放入到事件字段中并写入目标logstore中。

分裂

日志信息非常复杂, 同时包含了多条信息时, 对一条日志分裂成多条日志时的过程叫做事件分裂.
例如某一条日志的字段content内容如下:

__time__: 1231245
__topic: "win_logon_log"
content: 
[ {
    "source": "1.2.3.4",
    "dest": "1.2.3.4"
    "action": "login",
    "result": "pass"
},{
    "source": "1.2.3.5",
    "dest": "1.2.3.4"
    "action": "logout",
    "result": "pass"
}
]

可以分裂成2条日志:

__time__: 1231245
__topic: "win_logon_log"
content: 
{
    "source": "1.2.3.4",
    "dest": "1.2.3.4"
    "action": "login",
    "result": "pass"
}

__time__: 1231245
__topic: "win_logon_log"
content: 
{
    "source": "1.2.3.5",
    "dest": "1.2.3.4"
    "action": "logout",
    "result": "pass"
}

GROK

使用模式化语法代替复杂的正则表达式.
例如
grok("%{IPV4}")表示一个匹配IP v4的正则表达式,等价于: "(?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9])"
具体参考GROK参考

正则捕获

用于特定正则表达式中局部内容捕获并给与一个名字, 数据加工中主要用于传递给e_regex中更直观的配置提取的字段名.
例如
e_regex("content", "(?P<email>[a-zA-Z][a-zA-Z0-9_.+-=:]+@\w+\.com")表示提取字段content中的邮件地址并放入到字段email中. 这里邮件是一个通用正则表达式, 推荐使用GROK进行简化:
e_regex("content", grok("%{EMAILADDRESS:email}").

进一步详情,请参考用户手册。

进一步参考

欢迎扫码加入官方钉钉群获得实时更新与阿里云工程师的及时直接的支持:
image

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
2月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
650 53
|
2月前
|
数据采集 运维 监控
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。
234 28
|
3月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
480 1
|
6月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
本文介绍了阿里集团A+流量分析平台的日志查询优化方案,针对万亿级日志数据的写入与查询挑战,提出基于Flink、Paimon和StarRocks的技术架构。通过Paimon存储日志数据,结合StarRocks高效计算能力,实现秒级查询性能。具体包括分桶表设计、数据缓存优化及文件大小控制等措施,解决高并发、大数据量下的查询效率问题。最终,日志查询耗时从分钟级降至秒级,显著提升业务响应速度,并为未来更低存储成本、更高性能及更多业务场景覆盖奠定基础。
|
7月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
561 117
|
3月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
321 0
|
3月前
|
数据采集 运维 监控
|
5月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
642 4
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
362 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件

相关产品

  • 日志服务
  • 下一篇
    oss云网关配置