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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5天前
|
存储 数据采集 JavaScript
深入理解数仓开发(一)数据技术篇之日志采集
深入理解数仓开发(一)数据技术篇之日志采集
|
1月前
|
人工智能 数据可视化 开发工具
Git log 进阶用法(含格式化、以及数据过滤)
Git log 进阶用法(含格式化、以及数据过滤)
|
1月前
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第9天】mongoDB查看数据的插入日志
317 4
|
1月前
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第2天】mongoDB查看数据的插入日志
323 0
|
1月前
|
存储 监控 数据可视化
无需重新学习,使用 Kibana 查询/可视化 SLS 数据
本文演示了使用 Kibana 连接 SLS ES 兼容接口进行查询和分析的方法。
66617 11
|
22天前
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第22天】mongoDB查看数据的插入日志
28 3
|
24天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之从Oracle数据库同步数据时,checkpoint恢复后无法捕获到任务暂停期间的变更日志,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
25天前
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之同步PostgreSQL数据时,WAL 日志无限增长,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
25天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用合集之是否支持从库归档日志捕获数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
关系型数据库 MySQL 数据管理
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
219 0

相关产品

  • 日志服务