添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
parse - Amazon CloudWatch Logs

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 字段。