我想使用 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 列表同时显示入站和出站连接(srcAddr 和 dstAddr)。
- 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 @timestamp, @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)
**注意:**对于其他示例查询,请参阅示例查询。
相关信息
使用 CloudWatch Logs Insights 进行日志数据分析