本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
模式分析
CloudWatch 当您查询日志时,Logs Insights 使用机器学习算法来查找模式。模式是一种共享的文本结构,在您的日志字段中重复出现。查看查询结果时,可以选择 “模式” 选项卡,查看 CloudWatch Logs 根据结果样本找到的模式。或者,您可以将pattern
命令附加到查询中,以分析整组匹配的日志事件中的模式。
模式对于分析大型日志集很有用,因为大量日志事件通常可以压缩成几个模式。
考虑以下三个日志事件的示例。
2023-01-01 19:00:01 [INFO] Calling DynamoDB to store for resource id 12342342k124-12345 2023-01-01 19:00:02 [INFO] Calling DynamoDB to store for resource id 324892398123-12345 2023-01-01 19:00:03 [INFO] Calling DynamoDB to store for resource id 3ff231242342-12345
在前面的示例中,所有三个日志事件都遵循一种模式:
<*> <*> [INFO] Calling DynamoDB to store for resource id <*>
模式中的字段称为标记。模式中不同的字段(例如请求 ID 或时间戳)是动态标记。每个动态令牌都由 Lo CloudWatch gs 显示<*>
时表示。
动态令牌的常见示例包括错误代码、时间戳和请求 ID。令牌值代表动态令牌的特定值。例如,如果动态令牌表示 HTTP 错误代码,则标记值可能是501
。
模式检测还用于 CloudWatch 日志异常检测器和比较功能。有关更多信息,请参阅 日志异常检测 和 与之前的时间范围进行比较(差异)。
模式分析入门
模式检测将在任何 Logs Insight CloudWatch s 查询中自动执行。不包含该pattern
命令的查询会在结果中同时获取日志事件和模式。
如果在查询中包含该pattern
命令,则会对整个匹配的日志事件集执行模式分析。这为您提供了更准确的模式结果,但是当您使用该pattern
命令时,不会返回原始日志事件。当查询不包含时pattern
,模式结果要么基于返回的前 1000 个日志事件,要么基于您在查询中使用的限制值。如果包含pattern
在查询中,则 “模式” 选项卡中显示的结果将来自查询匹配的所有日志事件。
开始在 Log CloudWatch s Insights 中进行模式分析
打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/
。 在导航窗格中,选择日志、日志、见解。
在 Logs Insights(日志洞察)页面,查询编辑器包含一个默认查询,它将返回 20 个最近的日志事件。
删除查询框中的
| limit 20
行,使查询如下所示:fields @timestamp, @message, @logStream, @log | sort @timestamp desc
在选择日志组下拉列表中,选择一个或多个要查询的日志组。
(可选)使用时间间隔选择器选择要查询的时间段。
您可以在 5 分钟和 30 分钟间隔、1 小时、3 小时和 12 小时间隔或自定义时间范围之间进行选择。
-
选择 “运行查询” 以开始查询。
查询运行完毕后,“日志” 选项卡将显示查询返回的日志事件表。表格上方有一条关于有多少条记录与查询相匹配的消息,类似于显示 71,101 条匹配记录中的 1000 条。
选择 “图案” 选项卡。
现在,该表显示了在查询中找到的模式。由于查询中不包含该
pattern
命令,因此此选项卡仅显示在 “日志” 选项卡的表中显示的 1000 个日志事件中发现的模式。对于每种模式,都会显示以下信息:
模式,每个动态令牌都显示为
<*>
。事件计数,即该模式在查询的日志事件中出现的次数。选择事件计数列标题以按频率对模式进行排序。
事件比率,即包含此模式的查询日志事件的百分比。
严重性类型,将是以下类型之一:
如果模式中包含 “错误” 一词,则出错。
如果模式包含 “警告” 一词但不包含错误,则发出警告。
如果模式不包含 “警告” 或 “错误”,则为@@ 信息。
选择严重性信息列标题以按严重性对模式进行排序。
现在更改查询。将查询中的
| sort @timestamp desc
行替换为| pattern @message
,这样完整的查询如下所示:fields @timestamp, @message, @logStream, @log | pattern @message
选择运行查询。
查询完成后,“日志” 选项卡中没有任何结果。但是,根据查询的日志事件总数,“模式” 选项卡列出的模式数量可能更多。
无论您是否包含
pattern
在查询中,都可以进一步检查查询返回的模式。为此,请在 “检查” 列中选择其中一个模式的图标。将出现 “模式检查” 窗格并显示以下内容:
模式。在模式中选择一个代币来分析该代币的值。
显示查询时间范围内该模式出现次数的直方图。这可以帮助您识别有趣的趋势,例如模式的发生率突然增加。
日志样本选项卡显示了一些与所选模式相匹配的日志事件。
标记值选项卡会显示所选动态令牌的值(如果您选择了动态标记)。
注意
每个令牌最多捕获 10 个令牌值。代币数量可能不精确。 CloudWatch 日志使用概率计数器来生成代币数量,而不是绝对值。
“相关模式” 选项卡显示经常出现的其他模式,这些模式与您正在检查的模式几乎同时发生。例如,如果一条
ERROR
消息的模式通常伴随着另一个标记为其他详细信息的日志事件,则此处会显示该模式。INFO
有关模式命令的详细信息
本节包含有关该pattern
命令及其用途的更多详细信息。
在上一教程中,我们在添加
sort
命令时删除了该命令,pattern
因为如果查询在pattern
命令后面包含命令,则查询无效。sort
在 apattern
之前加一个是有效的sort
。有关
pattern
语法的更多详细信息,请参阅模式。在查询
pattern
中使用时,@message
必须是pattern
命令中选定的字段之一。可以在
filter
命令前添加该pattern
命令,以便仅将经过筛选的日志事件集用作模式分析的输入。要查看特定字段(例如从
parse
命令派生的字段)的模式结果,请使用pattern @fieldname
。具有非日志输出的查询(例如使用
stats
命令的查询)不会返回模式结果。