模式 - Amazon CloudWatch Logs

模式

使用 pattern 自动将您的日志数据划分为不同模式。

模式是在日志字段中重复出现的共有的文本结构。您可以使用 pattern 来查看新出现的趋势、监控已知错误以及识别经常出现的或高成本的日志行。CloudWatch Logs Insights 还提供控制台体验,您可以使用它来查找并进一步分析日志事件中的模式。有关更多信息,请参阅 模式分析

由于 pattern 命令会自动识别常见模式,因此您可以将其用作搜索和分析日志的起点。您还可以将 pattern filter parse sort 命令结合使用,在更精细的查询中识别模式。

模式命令输入

pattern 命令需要以下输入之一:@message 字段、使用  parse 命令创建的提取字段或使用一个或多个字符串函数操作的字符串。

如果 CloudWatch Logs 无法推断动态令牌所代表的数据类型,则将其显示为 <Token-数字>,数字 表示此令牌与其他动态令牌相比在模式中出现的位置。

动态令牌的常见示例包括错误代码、IP 地址、时间戳以及请求 ID。

模式命令输出

pattern 命令将生成以下输出:

  • @pattern:在日志事件字段中重复出现的共有的文本结构。在模式内变化的字段(例如请求 ID 或时间戳)由令牌表示。如果 CloudWatch Logs 可以确定动态令牌所代表的数据类型,它会将该令牌显示为 <string-number>字符串是令牌所代表的数据类型的描述。数字显示了与其他动态令牌相比,此令牌在模式中的出现位置。

    CloudWatch Logs 根据分析包含该名称的日志事件的内容来分配名称的字符串部分。

    如果 CloudWatch Logs 无法推断动态令牌所代表的数据类型,则将其显示为 <Token-数字>,数字 表示此令牌与其他动态令牌相比在模式中出现的位置。

    例如,[INFO] Request time: <Time-1> ms 是日志消息 [INFO] Request time: 327 ms 的潜在输出。

  • @ratio:选定时间段的日志事件与符合已确定模式的指定日志组的比率。例如,如果所选日志组和时间段中有一半的日志事件符合模式,则 @ratio 返回 0.50

  • @sampleCount:选定时间段的日志事件与符合已确定模式的指定日志组的数量。

  • @severityLabel:日志严重性或级别,表示日志中包含的信息类型。例如,ErrorWarningInfoDebug

示例

以下命令识别选定时间范围内指定日志组中具有相似结构的日志,并按模式和计数对其进行分组

pattern @message

pattern 命令可以与  filter 命令结合使用

filter @message like /ERROR/ | pattern @message

pattern 命令可以与  parse 和  sort 命令结合使用

filter @message like /ERROR/ | parse @message 'Failed to do: *' as cause | pattern cause | sort @sampleCount asc