Как эффективно регистрировать метрики из API Gateway при использовании кеша? - PullRequest
0 голосов
/ 26 июня 2018

Мой сценарий таков:

  • API-шлюз, имеющий единственную конечную точку, обслуживает примерно 250 миллионов запросов в месяц при поддержке лямбда-функции.
  • Кэширование включено, и 99% запросов попадают в кеш.
  • Запрос содержит параметры запроса, из которых мы хотим получить статистику.
  • Поскольку используется кеш, большинство запросов никогда не попадают в функцию Lambda. В настоящее время мы включили полное ведение журнала запросов / ответов в API Gateway для сбора параметров запроса в CloudWatch. Раз в неделю мы запускаем скрипт для разбора логов и компиляции интересующей нас статистики.

Проблемы с этой настройкой:

  • Наш сценарий выполняется ~ 5 часов и дает только снимок за последнюю неделю. В идеале нам было бы интересно постоянно отслеживать статистику, скажем, каждые 5 минут или каждый час.
  • Использование полного ведения журнала запросов / ответов приводит к ОГРОМНОМУ количеству журналов, большинство из которых не содержит ничего, что нас интересует.

В идеале мы хотели бы завершить полное ведение журнала запросов / ответов, но при этом получить интересующую нас статистику. Я рассмотрел возможность входа в CloudWatch из Lambda @ Edge, чтобы иметь возможность собирать параметры запроса до того, как запрос попадет в кэш, а затем используйте метрический фильтр или, возможно, Kinesis, чтобы получить необходимую статистику.

Было бы ли это жизнеспособным решением, можете ли вы предложить другую установку, которая могла бы решить наши проблемы более эффективным способом без больших затрат?

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете настроить логирование доступа в своем API (https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html), которое позволяет выбирать (часть запроса и ответа) и публиковать более структурированные журналы в cloudwatch.

Затем вы можете использовать шаблон фильтра cloudwatch (https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html), чтобы сгенерировать некоторые метрики или журналы каналов для вашего аналитического механизма (или запустить скрипт, который вы сейчас запускаете).

...