亚马逊AWS官方博客

新增功能 – Amazon CloudWatch Logs Insights – 快速交互式日志分析

很多 AWS 服务都会创建日志。我首先想到的包括 VPC 流日志Route 53 日志Lambda 日志CloudTrail 日志(针对 AWS API 调用)、RDS 日志IoT 日志ECS 日志API 网关日志S3 Server 访问日志、EC2 实例日志(通过 CloudWatch 代理 记录)等。您在 EC2 实例(ApacheTomcatNGINX 等)上运行的服务也会生成日志,您的应用程序代码或许也会生成日志。

这些日志内包含数据点、模式、趋势和数据分析,可供您用于了解应用程序和 AWS 资源的行为方式、确定改进空间以及解决操作问题。但像往常一样,存在一个问题。广泛的格式和数据元素以及原始日志的庞大规模可能会加大分析难度。如果每位 AWS 客户每天例行生成 100TB 或更多日志文件,findgrep 等旧式工具就不足以满足需求了!

CloudWatch Logs Insights
这就需要全新 CloudWatch Logs Insights 了! 这是一项完全托管式服务,专门在云中运行,无需设置或维护。它可以在几秒钟内读取大量日志,并为您提供快速、交互式的查询和直观结果。它可以处理任何日志格式,并自动发现 JSON 日志中的字段。在下文中可以看到,它非常灵活,很快就会成为您深入探究日志的首选工具之一。

CloudWatch Logs Insights 包含一种复杂的即席查询语言,以及用于获取所需事件字段的命令、基于条件的过滤器,还支持计算聚合统计信息(包含百分位数和时间序列聚合),对所需的任何文件进行排序,以及限制查询返回的事件数量。您还可以使用正则表达式从事件字段中提取数据,创建一个或多个可由查询进一步处理的瞬时字段。您可以利用折线图和堆叠面积图直观呈现查询结果,还可以向 CloudWatch 控制面板添加查询。其中甚至包含一组丰富的示例查询,可以引导您入门。

Insights 实际操作
首先,我打开 CloudWatch 控制台,单击 Insights(数据分析):

随后使用菜单选择所需的日志组:

我可以输入查询,也可以选择一个示例查询:

如您所见,该工具针对多种不同类型的日志提供了示例查询。我选择第一个,单击运行查询,系统会扫描日志,并在几秒钟之内显示结果:

我可以为查询添加过滤器,并再次运行查询。假设我想重点查看 EC2 API 调用,那么可以使用竖线 ( | ) 和 filter 命令:

我可以按绝对或相对时间范围过滤:

我还可以生成直观视图。这是一个简单的直观视图:Amazon RDS 在过去 30 分钟内的内存使用指标,按 1 分钟分组:

CloudWatch Logs Insights 会发现事件中的所有字段,告诉我它们在所选日志中出现的频率:

我可以利用此信息来以交互的方式构建查询:

对于不执行任何聚合的查询,我可以展开一个事件并查看所有字段:

查询语言支持六种类型的命令:

fields – 检索一个或多个日志字段。它还会利用 abssqrtstrlentrim 等函数。

filter – 根据使用布尔运算符、比较运算符和正则表达式构建的一个或多个条件,检索日志字段。

stats – 按照给定时间间隔(使用可选的 by 修饰符指定)为一个日志字段计算聚合统计信息,例如 sumavgcountminmaxpercentile

sort – 按升序或降序对日志事件进行排序。

limit – 限制查询返回的日志事件数量。

parse – 从事件字段中提取数据,创建一个或多个可由查询进一步处理的瞬时字段。

该语言还支持丰富的算术和比较运算符、数字函数、字符串函数、日期/时间函数和聚合函数。

像往常一样,我向您展示了一个相当简单的功能子集,让您可以大体了解自己可以获得的强大功能。以下是您可以自己尝试的一些事项:

添加到控制面板 – 创建富有洞察力的查询之后,单击添加到控制面板,然后选择现有控制面板或新建一个:

复制查询结果 – 使用 CloudWatch Logs Insights 发现问题之后,单击操作菜单,然后选择 Copy query results(复制查询结果):

随后您可以将结果粘贴到票证系统中,以获得解决方案。

API 和 CLI 访问 – 除了通过控制台访问之外,您还可以通过 AWS 命令行界面 (CLI)AWS 开发工具包访问此功能。

CloudWatch 集成 – 您可以编写少量 glue 代码来运行查询,并使用结果发布自定义指标。然后,您可以直观呈现它们、设置警报等,所有这些都旨在简化和加速故障排除工作。

现已推出
CloudWatch Logs Insights 现已面向以下区域推出,您可以立即开始使用:美国东部(弗吉尼亚北部)美国东部(俄亥俄)美国西部(加利福尼亚北部)美国西部(俄勒冈)加拿大(中部)欧洲(爱尔兰)欧洲(法兰克福)欧洲(伦敦)欧洲(巴黎)亚太地区(东京)亚太地区(孟买)亚太地区(首尔)亚太地区(悉尼)南美洲(圣保罗)

定价基于针对各查询扫描并且提取的日志数据量,在美国东部(弗吉尼亚北部),每 GB 的价格是 0.005 USD,其他区域的价格类似。