Как автоматически создавать сигналы CloudWatch для API с помощью событий CloudWatch и Lambda

1656619931 kak avtomaticheski sozdavat signaly cloudwatch dlya api s pomoshhyu sobytij

Янь Цуй

В предыдущей публикации я обсуждал, как автоматически подписаться. Группа журналов CloudWatch к лямбда-функции с помощью События CloudWatch. Преимущество этого состоит в том, что нам не нужен ручной процесс, чтобы обеспечить пересылку всех журналов Lambda в нашу службу агрегации журналов.

0*TVbE2siAsoz5JPxp

Хотя это полезно само собой, оно лишь затрагивает поверхность того, что мы можем сделать. CloudTrail и События CloudWatch облегчают автоматизацию многих повседневных операций с помощью лямбда конечно?

0*2Xre5dsJRMQqIrZA

Я работаю с Шлюз API и лямбда много. Каждый раз, когда вы создаете новый API или вносите изменения, вам нужно сделать несколько вещей:

  • Включить Подробные показатели для этапа развертывания
  • Установите информационную панель в CloudWatch, которая показывает количество запросов, задержки и количество ошибок
  • Настройте Сигнализация CloudWatch для задержек P99 и количества ошибок

Поскольку эти действия производятся вручную, они часто пропускаются.

Вы когда-нибудь забыли обновить информационную панель после добавления новой конечной точки в API? А вы тоже не забыли настроить сигнал задержки P99 на этой новой конечной точке? Как напоминать о количестве ошибок 4XX или 5xx?

Большинство команд, с которыми я имел дело, имеют определенные конвенции по этому поводу, но у них нет способа их обеспечить. Результатом является то, что конвенция применяется в поправках и на нее нельзя полагаться. Я думаю, что этот подход не зависит от размера команды.

Это работает, когда вы небольшая команда. Каждый имеет общее понимание и необходимую дисциплину для соблюдения конвенции. Когда команда увеличивается, вам потребуется автоматизация, чтобы обеспечить соблюдение этих условий.

К счастью, мы можем автоматизировать эти шаги вручную, используя тот же шаблон. В разделе мониторинга моего курса Production-Ready без сервера я продемонстрировал, как это можно сделать за 3 простых шага:

  • CloudTrail захватывает CreateDeployment запрос к Шлюз API
  • События CloudWatch шаблон против этого восторженного запроса
  • лямбда функция, чтобы включить подробные показатели и создать напоминания для каждой конечной точки

Если вы используете фреймворк без сервера, у вас может быть функция, которая выглядит так:

Из приведенного выше кода следует обратить внимание на несколько вещей:

  • Я использую плагин serverless-iam-roles-per-function, чтобы предоставить функции специальной роли IAM
  • Функция требует apigateway:PATCH разрешение включить подробные показатели
  • Функция требует apigateway:GET разрешение на получение названия API и конечных точек REST
  • Функция требует cloudwatch:PutMetricAlarm разрешение на создание сигнализации
  • Переменные среды определяют темы SNS для Сигнализация CloudWatch

Зафиксированное событие выглядит так:

Мы можем найти restApiId и stageName внутри detail.requestParameters атрибут. Это все, что нам нужно, чтобы выяснить, какие там конечные точки и, следовательно, какие сигналы тревоги нам нужно создать.

Внутри функции обработчика, которую можно найти здесь, мы выполняем несколько шагов:

  • Включите подробные показатели с помощью an updateStage вызов к шлюзу API
  • Получите список конечных точек REST с помощью a getResources вызов к шлюзу API
  • Получите название REST API с помощью a getRestApi вызов к шлюзу API
  • Для каждой конечной точки REST создайте сигнал задержки P99 в файле AWS/ApiGateway пространство имен
0*4jj_jV1dNe8XMyEE

Теперь каждый раз, когда я создаю новый API, я буду иметь Сигнализация CloudWatch чтобы известить меня, когда задержка 99 процентилов для конечной точки превышает 1 секунду в течение 5 минут.

Все это только с помощью нескольких строк кода?

0*rXmrxT-GCnEEprlK

Вы можете рассмотреть это дальше и иметь другие функции лямбда для:

  • Создайте сигналы CloudWatch для ошибок 5xx для каждой конечной точки
  • Создайте информационную панель CloudWatch для API

Итак, у вас есть! Полезен шаблон для автоматизации выполнения ручных операций.

И прежде чем рассказать мне о бессерверном плагине ACloudGuru AWS Alerts от пользователей ACloudGuru, да, я знаю об этом. Это выглядит аккуратно, но в конечном счете это все еще то, о чем разработчик должен помнить.

Для этого требуется дисциплина.

Мой опыт подсказывает мне, что никогда нельзя полагаться на дисциплину. Вот почему я предпочитаю иметь платформу, которая будет генерировать эти тревоги.

Добавить комментарий

Ваш адрес email не будет опубликован.