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)
我有 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)