parse
使用
parse
从日志字段中提取数据并创建可以在查询中处理的提取字段。
parse
同时支持使用通配符和正则表达式的 glob 模式。
您可以使用正则表达式解析嵌套的 JSON 字段。
示例:解析嵌套的 JSON 字段
该代码片段显示了如何解析在摄取过程中展平的 JSON 日志事件。
{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}
该代码片段显示了一个带有正则表达式的查询,其将提取
fieldsA
和
fieldsB
的值以创建提取字段
fld
和
array
。
parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array
已命名的捕获组
配合正则表达式一起使用
parse
时,可以使用已命名的捕获组将模式捕获到字段中。语法为
parse @message (?<
Name
>
pattern
).
。
下面的示例使用 VPC 流日志上的一个捕获组将 ENI 提取到名为“
NetworkInterface
”的字段中。
parse @message /(?<NetworkInterface>eni-.*?) / display @timestamp, NetworkInterface
注意
JSON 日志事件在摄取过程中会被展平。目前,不支持使用 glob 表达式来解析嵌套的 JSON 字段。您只能解析所含日志事件字段数不超过 200 的 JSON 日志事件。解析嵌套的 JSON 字段时,必须格式化查询中的正则表达式,使其与 JSON 日志事件的格式匹配。
解析命令的示例
使用 glob 表达式来从日志字段
@message
提取字段
@user
、
@method
和
@latency
,并对于
@method
和
@user
的每个唯一组合返回平均延迟。
parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user
使用正则表达式从日志字段
@message
提取字段
@user2
、
@method2
和
@latency2
,并对于
@method2
和
@user2
的每个唯一组合返回平均延迟。
parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2
提取字段
loggingTime
、
loggingType
和
loggingMessage
,筛选出包含
ERROR
或
INFO
字符串的日志事件,然后仅显示包含
ERROR
字符串的事件的
loggingMessage
和
loggingType
字段。