AWS CloudWatch Logs Insights - 按 API 资源名称对日志进行分组并进行聚合

AWS CloudWatch Logs Insights - Group logs by API resource names and make aggregations

我有 AWS API 网关和两个资源:

/api/orders
/api/history

而且我已经为 API 启用了 CloudWatch 日志。使用 AWS CloudWatch Logs Insights,我能够从与上述 API 相关的日志组中收集和观察日志。我想使用收集的日志分析通过 API 的流量,并确定对每个 API 资源发出了多少请求。

如何使用 Logs Insights 按资源名称对 API 中的日志记录进行分组并聚合一些数据(例如,计算每个资源的请求数)?

使用下一个查询,我们可以分别查看每个资源的日志:

fields @timestamp, @message
| filter @message like /Resource Path: \/api\/orders/
| sort @timestamp desc


fields @timestamp, @message
| filter @message like /Resource Path: \/api\/history/
| sort @timestamp desc

如果您想在 'Visualization Tab' 上查看 'line' 图表并查看随时间变化的每个资源请求的数量,聚合在(示例)5 分钟的容器中,您可以尝试类似

fields @timestamp, @message
| parse @message like /Resource Path: *history/ as hist
| parse @message like /Resource Path: *orders/ as ord
| stats count (hist) as c_hist, count(ord) as c_ord by bin (5m)