如何将 CloudWatch Logs Insights 查询用于我的 VPC 流日志?

上次更新日期:2022 年 4 月 7 日

我想使用 Amazon CloudWatch Logs Insights 查询来处理日志组中的 Amazon Virtual Private Cloud (Amazon VPC) 流日志。我该如何操作?

简短描述

打开针对 CloudWatch Logs 的 VPC 流日志后,您会看到每个弹性网络接口对应一个日志流。CloudWatch Logs Insights 是一款查询工具,可以对日志组中存储的日志事件执行复杂的查询。如果存在问题,您可以使用 CloudWatch Logs Insights 来识别潜在原因并验证已部署的修复。

有关支持的日志类型的信息,请参阅支持的日志和发现的字段

解决方法

运行查询

要运行查询,请执行以下操作:

1.    打开 Cloudwatch 控制台

2.    选择 Logs(日志)、Logs Insights

3.    在 Logs Insights 控制面板上,选择要为其分析和可视化数据的日志组。

4.    您可以创建查询,也可以运行所提供的 VPC 流日志示例查询之一。如果您要创建自定义查询,请先查看 Amazon CloudWatch 文档中提供的教程。有关查询语法的信息,请参阅 CloudWatch Logs Insights 查询语法

5.    选择 History(历史记录)以查看之前执行的查询。您可以从 History(历史记录)中再次运行查询。

6.    要导出结果,请选择 Export results(导出结果),然后选择一种格式。

示例查询

场景 1

您有 Web 服务器、应用程序服务器和数据库服务器。应用程序未按预期方式工作。例如,您收到了超时或 HTTP 503 错误,并且正在尝试确定错误的原因。

示例变量:

  • Action(操作)设置为“REJECT”(拒绝),以便只返回被拒绝的连接。
  • 该查询仅包括内部网络。
  • 服务器 IP 列表同时显示入站和出站连接(srcAddrdstAddr)。
  • Limit(限制)设置为 5,以便仅显示前五个条目。
  • Web 服务器 IP:10.0.0.4
  • 应用程序服务器 IP:10.0.0.5
  • 数据库服务器 IP:10.0.0.6
filter(
action="REJECT" and
dstAddr like   /^(10\.|192\.168\.)/and
srcAddrlike   /^(10\.|192\.168\.)/ and
(
srcAddr = "10.0.0.4" or
dstAddr = "10.0.0.4" or
srcAddr = "10.0.0.5" or
dstAddr = "10.0.0.5" or
srcAddr = "10.0.0.6" or
dstAddr = "10.0.0.6" or
)
)|
stats count(*) as records by srcAddr,dstAddr,dstPort,protocol |
sort records desc |
limit 5

场景 2

您在给定的弹性网络接口上遇到间歇性超时。下面的查询将检查一段时间内弹性网络接口上是否存在任何拒绝。

fields @timestamp, interfaceId, srcAddr, dstAddr, action
| filter (interfaceId = 'eni-05012345abcd' and action = 'REJECT')
| sort @timestamp desc
| limit 5

场景 3

下面的查询示例分析 VPC 流日志以生成有关特定弹性网络接口的报告。该查询会检查发送到不同端口的流量。

fields @timestemp, @message
 | stats count(*) as records by dstPort, srcAddr, dstAddr as Destination
 | filter interfaceId="eni-05012345abcd"
 | filter dstPort="80" or dstPort="443" or dstPort="22" or dstPort="25"
 | sort HitCount desc
 | limit 10

场景 4

下面的查询会筛选 VPC 流日志,以列出尝试与您的 VPC 中的特定 IP 或 CIDR 连接的 IP 地址。

对于特定的 IP:

fields @timestamp, srcAddr, dstAddr
 | sort @timestamp desc
 | limit 5
 | filter srcAddr like "172.31."

对于特定的 CIDR:

fields @timestamp, srcAddr, dstAddr
 | sort @timestamp desc
 | limit 5
 | filter isIpv4InSubnet(srcAddr,"172.31.0.0/16)

注意:对于其他示例查询,请参阅示例查询


这篇文章对您有帮助吗?


您是否需要账单或技术支持?