AWS CloudWatch Logs Insights - группируйте журналы по именам ресурсов API и выполняйте агрегирование.

У меня есть AWS API Gateway с двумя ресурсами:

/api/orders
/api/history

И я включил журналы CloudWatch для этого API. Используя AWS CloudWatch Logs Insights, я могу собирать и просматривать журналы из групп журналов, связанных с упомянутым API. Я хотел бы проанализировать трафик, который проходит через API, используя собранные журналы, и определить, сколько запросов было сделано к каждому ресурсу API.

Как я могу сгруппировать записи журнала из моего API по имени ресурса и агрегировать некоторые данные (например, подсчитать количество запросов для каждого ресурса) с помощью Logs Insights?




Ответы (2)


Используя следующие запросы, мы можем увидеть логи для каждого ресурса отдельно:

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
person Gleb    schedule 09.10.2019

Если вы хотите увидеть «линейный» график на вкладке «Визуализация» и увидеть количество запросов каждого ресурса с течением времени, агрегированные (пример) по 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)
person 6ugr3    schedule 08.03.2021