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

本文涉及的产品
对象存储 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日志并进行多维度分析。
目录
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
116 40
|
7月前
|
关系型数据库 物联网 PostgreSQL
沉浸式学习PostgreSQL|PolarDB 11: 物联网(IoT)、监控系统、应用日志、用户行为记录等场景 - 时序数据高吞吐存取分析
物联网场景, 通常有大量的传感器(例如水质监控、气象监测、新能源汽车上的大量传感器)不断探测最新数据并上报到数据库. 监控系统, 通常也会有采集程序不断的读取被监控指标(例如CPU、网络数据包转发、磁盘的IOPS和BW占用情况、内存的使用率等等), 同时将监控数据上报到数据库. 应用日志、用户行为日志, 也就有同样的特征, 不断产生并上报到数据库. 以上数据具有时序特征, 对数据库的关键能力要求如下: 数据高速写入 高速按时间区间读取和分析, 目的是发现异常, 分析规律. 尽量节省存储空间
600 1
|
7月前
|
SQL 关系型数据库 MySQL
数据库基本概念(SQL,索引,视图,事务,日志等)(二)
数据库基本概念(SQL,索引,视图,事务,日志等)(二)
194 0
|
4月前
|
SQL 关系型数据库 MySQL
⑩⑥ 【MySQL】详解 触发器TRIGGER,协助 确保数据的完整性,日志记录,数据校验等操作。
⑩⑥ 【MySQL】详解 触发器TRIGGER,协助 确保数据的完整性,日志记录,数据校验等操作。
37 0
|
1天前
|
存储 数据库 流计算
Flink CDC为什么我几张表十来条数据就产生了那么大日志?
Flink CDC为什么我几张表十来条数据就产生了那么大日志?
109 0
|
5月前
|
存储 数据采集 监控
从存储统一到数据融合,SLS在可观测场景的思考和行动
介绍SLS在可观测数据融合分析的一系列技术升级,融合Trace、全栈监控、Continuous Profiling、移动端监控等功能,帮助大家更快速地构筑全栈、自动化的观测能力。
127602 52
|
6月前
|
存储 JSON 监控
日志分析:内网监控系统数据与ELK堆栈
日志分析一直是信息技术领域中至关重要的一项任务。随着互联网的不断发展,组织和企业积累了大量的数据,而其中很大一部分是日志数据。这些日志数据包含了系统的运行状态、事件发生记录以及性能指标,为了更好地理解和管理这些数据,ELK堆栈(Elasticsearch、Logstash和Kibana)成为了一种非常强大的工具。本文将探讨如何使用ELK堆栈进行内网监控系统数据的分析,同时提供一些代码示例来演示其功能和用法。
246 0
|
7月前
|
运维 监控 安全
使用日志数据的方式
使用日志数据的方式
42 0
|
7月前
|
人工智能 运维 监控
在日常开发工作中,日志数据该如何利用?
在日常开发工作中,日志数据是一个宝贵的资源,它可以提供关于应用程序运行状态、错误报告、性能指标和用户行为等方面的重要信息。正确地利用和分析日志数据可以帮助开发人员更好地理解应用程序的运行情况,快速定位和解决问题,改进应用程序的性能,并为业务决策提供有力支持。尤其是在现代科技发展的背景下,日志数据作为一种重要的信息资源,对于运维工作具有极大的价值。然而,如何充分利用日志数据,并将其应用于运维和开发工作中,仍然是许多企业和运维和开发人员关注的问题。那么本文就来分享一下在日常开发中关于日志数据的利用方面的探讨。
128 1
在日常开发工作中,日志数据该如何利用?
|
7月前
|
存储 人工智能 运维
日常工作中,你对于日志数据都是如何利用的?
近期阿里云宣布日志服务 SLS 内核迎来全新升级(https://developer.aliyun.com/topic/sls_pay_by_ingested_data1?spm=a2c6h.13066369.question.3.7f77533dUZ1xiM),通过运维领域模型加持,全链路提升智能分析能力,以更稳定、更智能、更高效、更普惠的平台全方面帮助企业加速拥抱云原生和AI;目前我公司日志服务的使用场景,以及公司自研的日志系统。
76 1

相关产品

  • 日志服务