亚马逊AWS官方博客

Amazon CloudWatch Logs 现在提供自动化模式分析和异常检测功能



通过搜索日志数据来寻求运营或业务见解往往如同大海捞针。这通常要求手动筛选和查看单个日志记录。为了帮助您克服这一难题,Amazon CloudWatch 增加了新功能,自动识别日志记录并聚类模式,提取值得注意的内容和趋势,并使用(基于数十年的 Amazon 和 AWS 运营数据训练过的)高级机器学习(ML)算法通知您异常情况。

具体而言,CloudWatch 现在提供以下功能:

  • Logs Insights 页面上的模式选项卡可在查询结果中查找重复出现的模式,并支持您对其进行详细分析。这使您可以更轻松地找到所需的内容,并深入研究日志中的新内容或意想不到的内容。
  • 使用 Logs Insights 页面上时间间隔选择器中的比较按钮可快速将所选时间范围的查询结果与前一时间段(例如,前一天、上一周或前一个月)的查询结果进行比较。这样,可以与之前的稳定场景比较,查看发生了什么变化,从而使所花费的时间减少。
  • 导航窗格的日志部分中的日志异常页面会自动显示日志中发现的异常情况,同时在提取过程中对其进行处理。

让我们通过一次典型的故障排除之旅,了解这些功能在实践中是如何发挥作用的。我将查看一些应用程序日志,以查找关键模式,比较两个时间段,以了解发生了哪些变化,最后了解检测异常情况将如何有助于发现问题。

在日志中查找重复模式
CloudWatch 控制台中,我从导航窗格的日志部分选择 Logs Insights。首先,我选择了要查询的日志组。在本例中,我选择要检查的 Lambda 函数的日志组,然后选择运行查询

模式选项卡中,我看到了在这些日志组中找到的模式。其中一种模式似乎是错误的。我可以选择它,快速将其作为筛选条件添加到查询中,并重点查看包含此模式的日志。现在,我选择放大镜图标来分析模式。

控制台屏幕截图。

模式检查窗口中,显示了所选时间段内模式出现次数的直方图。在直方图之后,提供了来自日志的示例。

控制台屏幕截图。

模式的可变部分(例如数字)已被提取为“令牌”。 我选择令牌值选项卡来查看令牌的值。我可以选择令牌值,快速将其作为筛选条件添加到查询中,并重点查看包含具有该特定值的此模式的日志。

控制台屏幕截图。

我还可以查看相关模式选项卡,查看通常与我正在分析的模式同时出现的其他日志。例如,如果我查看的错误日志总是与显示更多详细信息的调试日志一起编写,我就会发现其中的关系。

将日志与前一时间段进行比较
为了更好地了解正在发生的事情,我在时间间隔选择器中选择比较按钮。这会更新查询,将结果与前一时间段进行比较。例如,我选择前一天来查看与昨天相比有哪些变化。

控制台屏幕截图。

模式选项卡中,我注意到错误数量实际上减少了 10%,因此目前的情况可能还不错。

我选择严重性类型为错误的模式上的放大镜图标,以查看两个时间段的完整比较。该图表内,所选时间范围(一小时)内两个时间段(在本例中为现在和昨天)内出现的模式重叠。

控制台屏幕截图。

错误在减少,但仍然存在。为了减少这些错误,我对应用程序进行了一些更改。一段时间后我返回比较日志,发现了一个在前一段时间内不存在的新错误模式。

控制台屏幕截图。

我的更新可能破坏了一些内容,于是我回滚到应用程序的先前版本。现在,我将保持原样,因为错误数量在我的用例可接受范围内。

检测日志中的异常情况
比较日志,我发现错误减少了,这让我很放心。但我怎么能知道是否发生了意想不到的事情呢? CloudWatch Logs 的异常检测会在提取期间处理日志时在日志中查找意外模式,并且可以在日志组级别启用。

我在导航窗格中选择日志组,然后键入筛选条件,以查看之前查看的相同日志组。我在异常检测列中选择配置,然后将评估频率选为 5 分钟。或者,我可以使用更长的间隔(最多 60 分钟),并添加模式,仅处理针对异常检测的特定日志事件。

在我为该日志组激活异常检测后,系统会根据历史基准不断评估传入日志。我等待几分钟,为了查明发生的情况,我从导航窗格的日志部分中选择日志异常

控制台屏幕截图。

为了简化这个视图,我可以抑制不想关注的异常情况。现在,我选择其中一个异常情况,以便以类似于前面的方式检查相应的模式。

控制台屏幕截图。

经过这一额外的检查,我确信应用程序没有需要紧急处理的问题。有了通过这些新功能收集的所有见解,我现在可以重点关注日志中的错误,以了解如何解决这些错误。

注意事项
Amazon CloudWatch 自动化日志模式分析现已在所有提供 Amazon CloudWatch Logs 的商业 AWS 区域发布,不包括中国(北京)、中国(宁夏)和以色列(特拉维夫)区域。

模式和比较查询功能根据现有的 Logs Insights 查询成本收取费用。将一个一小时的时间段与另一个一小时的时间段进行比较,相当于在两小时的时间段内运行单个查询。异常检测已包含在您的日志提取费用中,此功能不收取额外费用。有关更多信息,请参阅 CloudWatch 定价

使用 CloudWatch 自动化日志模式分析简化日志分析方式。

Danilo