数据解析类插件用于将原始日志结构化为键值对或结构化数据。
数据解析效果示例
表格展示该原始日志在分别使用正则解析插件与不使用解析插件的情况下,保存到日志服务后的数据结构。使用解析插件能够结构化数据,为后续查询提供便利。
原始日志 | 不使用解析插件 | 使用正则解析插件 |
| Content:"127.0.0.1 - - [16/Aug/2024:14:37:52 +0800] "GET /wp-admin/admin-ajax.php?action=rest-nonce HTTP/1.1" 200 41 "http://www.example.com/wp-admin/post-new.php?post_type=page" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"" | 正则表达式: |
数据解析插件概览
日志服务提供以下多种类型的数据解析插件,请按需要进行选择。
插件名称 | 类型 | 功能说明 |
正则解析 | 原生 | 使用正则表达式提取字段并转为键值对 |
JSON解析 | 原生 | 解析JSON格式日志为键值对 |
分隔符模式解析 | 原生 | 按分隔符结构化日志 |
Nginx模式解析 | 原生 | 解析Nginx访问日志 |
Apache模式解析 | 原生 | 解析Apache访问日志 |
IIS模式解析 | 原生 | 解析IIS访问日志 |
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail配置时,添加插件。具体操作,请参见处理插件概述。
正则解析插件
正则解析插件支持通过正则表达式提取日志字段,并将日志解析为键值对形式。
配置说明
参数名称 | 说明 |
原始字段 | 解析日志前,用于存放日志内容的原始字段,默认值为content。 |
正则表达式 | 用于匹配日志的正则表达式。
|
日志提取字段 | 为提取的日志内容(Value),设置对应的字段名(Key)。 |
解析失败时保留原始字段 | 选中解析失败时保留原始字段,则解析失败时,将保留原始字段。 |
解析成功时保留原始字段 | 选中解析成功时保留原始字段,则解析成功时,将保留原始字段。 |
重命名的原始字段 | 选中解析失败时保留原始字段或解析成功时保留原始字段后,可重命名原始字段名,用于存放原始的日志内容。 |
JSON解析插件
JSON解析插件支持将Object类型的JSON日志结构化,解析为键值对形式。
使用限制
JSON日志构建于两种结构,包括Object类型(键值对的集合)和Array类型(值的有序列表)。JSON解析插件支持解析Object类型的JSON日志,提取为键值对,即提取Object首层的键作为Key,Object首层的值作为Value。但不支持解析Array类型的JSON日志。
配置说明
参数名称 | 说明 |
原始字段 | 解析日志前,用于存放日志内容的原始字段,默认值为content。 |
解析失败时保留原始字段 | 选中解析失败时保留原始字段,则解析失败时,将保留原始字段。 |
解析成功时保留原始字段 | 选中解析成功时保留原始字段,则解析成功时,将保留原始字段。 |
重命名的原始字段 | 选中解析失败时保留原始字段或解析成功时保留原始字段后,可重命名原始字段名,用于存放原始的日志内容。 |
分隔符模式解析
分隔符模式解析插件支持通过分隔符将日志内容结构化,解析为多个键值对形式。
配置说明
参数 | 描述 |
原始字段 | 解析日志前,用于存放日志内容的原始字段,默认值为content。 |
分隔符 | 请根据您的日志内容选择正确的分隔符,例如竖线(|)。 说明 指定分隔符为不可见字符时,您需要查找不可见字符在ASCII码中对应的十六进制数,输入的格式为 |
引用符 | 当日志字段内容中包含分隔符时,需要指定引用符进行包裹,被引用符包裹的内容会被日志服务解析为一个完整字段。请根据您的日志格式选择正确的引用符。 说明 指定引用符为不可见字符时,您需要查找不可见字符在ASCII码中对应的十六进制数,输入的格式为 |
日志抽取字段 |
Key只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头。最大长度为128字节。 |
允许部分字段 | 如果日志中实际提取出的Value数量少于Key数量,是否上传日志到日志服务。选中允许部分字段表示上传。 例如日志为
|
处理超出字段方式 | 日志中提取的Value数量大于Key数量时的处理方法。
|
解析失败时保留原始字段 | 选中解析失败时保留原始字段,则解析失败时,将保留原始字段。 |
解析成功时保留原始字段 | 选中解析成功时保留原始字段,则解析成功时,将保留原始字段。 |
重命名的原始字段 | 选中解析失败时保留原始字段或解析成功时保留原始字段后,可重命名原始字段名,用于存放原始的日志内容。 |
附录
分隔符模式解析插件支持单字符分隔符和多字符分隔符。
单字符
单字符的日志示例如下所示。
05/May/2022:13:30:28,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",200,18204,aliyun-sdk-java
05/May/2022:13:31:23,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",401,23472,aliyun-sdk-java在单字符模式中,您需要指定分隔符,也可以同时指定引用符。
分隔符:通过单字符的分隔符分割日志,例如制表符(\t)、竖线(|)、空格、半角逗号(,)、半角分号(;)和不可见字符等单字符。分隔符不支持为双引号(")。
双引号(")可以作为引用符,在字段边界出现,也可以作为字段内容出现。如果双引号(")作为字段内容出现,需要进行转义,即在日志中处理为
""。日志服务解析字段时会自动还原,将""还原为"。例如分隔符为半角逗号(,),引用符为双引号("),且日志字段内部包含双引号(")和半角逗号(,),需要将包含半角逗号(,)的日志字段用引用符包裹,同时将日志字段中的双引号(")转义为""。处理后的日志格式为:1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00,该日志可以被解析为5个字段:1999、Chevy、Venture "Extended Edition, Very Large"、空字段和5000.00。引用符:日志字段内容中包含分隔符时,需要指定引用符进行包裹,被引用符包裹的内容会被日志服务解析为一个完整字段。
引用符可以设置为制表符(\t)、竖线(|)、空格、半角逗号(,)、半角分号(;)和不可见字符等单字符。
例如分隔符为半角逗号(,),引用符为双引号("),日志为
1997,Ford,E350,"ac, abs, moon",3000.00,该日志可以被解析为5个字段:1997、Ford、E350、ac, abs, moon、3000.00。
多字符
多字符的日志示例如下所示。
05/May/2022:13:30:28&&10.200.**.**&&POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1&&200&&18204&&aliyun-sdk-java
05/May/2022:13:31:23&&10.200.**.**&&POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1&&401&&23472&&aliyun-sdk-java多字符模式中,分隔符包括2~3个字符(例如||、&&&、^_^)。日志解析根据分隔符进行匹配,您无需使用引用符对日志字段进行包裹。
确保日志字段内容中不会出现分隔符的完整匹配,否则会导致字段误分割。
例如分隔符为&&,日志为1997&&Ford&&E350&&ac&abs&moon&&3000.00会被解析为5个字段:1997、Ford、E350、ac&abs&moon、3000.00。
Nginx模式解析
Nginx模式插件支持根据log_format中的定义将日志内容结构化,解析为多个键值对形式。
Nginx日志简介
Nginx服务器会根据log_format和access_log配置输出对应的Nginx访问日志,log_format和access_log的默认值如下所示。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$request_time $request_length '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/logs/nginx/access.log main日志字段说明如下所示。
字段名称 | 说明 |
remote_addr | 客户端IP地址。 |
remote_user | 客户端用户名。 |
time_local | 服务器时间,前后必须加上中括号([])。 |
request | 请求的URI和HTTP协议。 |
request_time | 整个请求的总时间,单位为秒。 |
request_length | 请求的长度,包括请求行、请求头和请求正文。 |
status | 请求状态。 |
body_bytes_sent | 发送给客户端的字节数,不包括响应头的大小。 |
http_referer | URL跳转来源。 |
http_user_agent | 客户端浏览器等信息。 |
配置说明
参数名称 | 说明 |
NGINX日志配置 | Nginx配置文件中的日志配置部分,以log_format开头。例如: |
原始字段 | 解析日志前,用于存放日志内容的原始字段,默认值为content。 |
日志提取字段 | 根据NGINX日志配置自动提取对应的日志字段(Key)。 |
解析失败时保留原始字段 | 选中解析失败时保留原始字段,则解析失败时,将保留原始字段。 |
解析成功时保留原始字段 | 选中解析成功时保留原始字段,则解析成功时,将保留原始字段。 |
重命名的原始字段 | 选中解析失败时保留原始字段或解析成功时保留原始字段后,可重命名原始字段名,用于存放原始的日志内容。 |
Apache模式解析
Apache模式解析插件支持根据Apache日志配置文件中的定义将日志内容结构化,解析为多个键值对形式。
Apache日志简介
Apache服务器会根据Apache日志配置文件中指定的日志打印格式、日志文件路径和名称输出Apache日志。例如CustomLog "/var/log/apache2/access_log" combined,表示日志打印时使用combined格式,日志文件路径为/var/log/apache2/access_log。
Apache日志格式
combined格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedcommon格式
LogFormat "%h %l %u %t \"%r\" %>s %b"自定义格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized
相关字段说明如下所示。更多信息,请参见mod_log_config。
字段格式
字段名称
说明
%a
client_addr
客户端IP地址。
%A
local_addr
本地IP地址。
%b
response_size_bytes
响应字节大小,空值时显示为短划线(-)。
%B
response_bytes
响应字节大小,空值时为0。
%D
request_time_msec
请求时间,单位为微秒。
%f
filename
文件名。
%h
remote_addr
远程的主机名。
%H
request_protocol_supple
请求协议。
%I
bytes_received
服务器接收的字节数,需要启用mod_logio模块。
%k
keep_alive
在此连接上处理的请求数。
%l
remote_ident
远程主机提供的识别信息。
%m
request_method_supple
请求方法。
%O
bytes_sent
服务器发送的字节数,需要启用mod_logio模块。
%p
remote_port
服务器端口号。
%P
child_process
子进程ID。
%q
request_query
查询字符串,如果不存在则为空字符串。
%r
request
请求内容,包括方法名、地址和HTTP协议。
%R
response_handler
服务端的处理程序类型。
%s
status
响应的HTTP状态,初始状态。
%>s
status
响应的HTTP状态,最终状态。
%t
time_local
服务器时间。
%T
request_time_sec
请求时间,单位为秒。
%u
remote_user
客户端用户名。
%U
request_uri_supple
请求的URI路径,不带查询字符串。
%v
server_name
服务器名称。
%V
server_name_canonical
根据UseCanonicalName指令设定的服务器名称。
“%{User-Agent}i”
http_user_agent
客户端信息。
“%{Referer}i”
http_referer
来源页。
配置说明
参数名称 | 说明 |
日志格式 | 根据Apache日志配置文件中定义的日志格式进行选择,包括common、combined和自定义。 |
APACHE配置字段 | Apache配置文件中的日志配置部分,通常以LogFormat开头。
|
原始字段 | 解析日志前,用于存放日志内容的原始字段,默认值为content。 |
正则表达式 | 用于提取Apache日志的正则表达式。日志服务会根据APACHE配置字段中的内容自动生成该正则表达式。 |
日志提取字段 | 根据APACHE配置字段中的内容自动生成日志字段(key)。 |
解析失败时保留原始字段 | 选中解析失败时保留原始字段,则解析失败时,将保留原始字段。 |
解析成功时保留原始字段 | 选中解析成功时保留原始字段,则解析成功时,将保留原始字段。 |
重命名的原始字段 | 选中解析失败时保留原始字段或解析成功时保留原始字段后,可重命名原始字段名,用于存放原始的日志内容。 |
IIS模式解析
IIS模式插件支持根据IIS日志格式定义将日志内容结构化,解析为多个键值对形式。
IIS日志简介
Windows服务器会根据您所选择的日志格式(IIS、NCSA和W3C)生成IIS日志。
日志格式
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken字段前缀说明
前缀
说明
s-
服务器操作。
c-
客户端操作。
cs-
客户端到服务器的操作。
sc-
服务器到客户端的操作。
各个字段说明
字段
说明
date
客户端发送请求的日期。
time
客户端发送请求的时间。
s-sitename
客户端所访问的站点的Internet服务和实例的号码。
s-computername
生成日志的服务器名称。
s-ip
生成日志的服务器的IP地址。
cs-method
请求方法,例如:GET、POST。
cs-uri-stem
URI资源,表示请求访问的地址。
cs-uri-query
URI查询,表示查询HTTP请求中半角问号(?)后的信息。
s-port
服务器端口号。
cs-username
通过验证的域或用户名。
如果是通过身份验证的用户,格式为
域\用户名。如果是匿名用户,显示短划线(-)。
c-ip
访问服务器的客户端真实IP地址。
cs-version
协议版本,例如:HTTP 1.0、HTTP 1.1。
cs(User-Agent)
客户端使用的浏览器。
Cookie
发送或接受的Cookie内容,如果没有Cookie,则显示短划线(-)。
referer
表示用户访问的前一个站点。
cs-host
主机信息。
sc-status
HTTP协议返回状态。
sc-substatus
HTTP子协议的状态。
sc-win32-status
使用Windows术语表示的操作状态。
sc-bytes
服务器发送的字节数。
cs-bytes
服务器接收的字节数。
time-taken
请求所花费的时间,单位:毫秒。
配置说明
参数名称 | 说明 |
日志格式 | 选择您的IIS服务器日志采用的日志格式,具体说明如下:
|
IIS配置字段 | 配置IIS配置字段,具体说明如下:
|
原始字段 | 解析日志前,用于存放日志内容的原始字段,默认值为content。 |
正则表达式 | 用于提取IIS日志的正则表达式。日志服务会根据IIS配置字段中的内容自动生成该正则表达式。 |
日志提取字段 | 根据IIS配置字段中的内容自动生成日志字段(Key)。 |
解析失败时保留原始字段 | 选中解析失败时保留原始字段,则解析失败时,将保留原始字段。 |
解析成功时保留原始字段 | 选中解析成功时保留原始字段,则解析成功时,将保留原始字段。 |
重命名的原始字段 | 选中解析失败时保留原始字段或解析成功时保留原始字段后,可重命名原始字段名,用于存放原始的日志内容。 |
相关文档
通过API接口配置Logtail流水线:
通过控制台配置处理插件:



