Я хотел бы отправить все журналы Cloudwatch, где сообщение console.log (появляющееся в моих журналах Cloudwatch) соответствует определенному шаблону (например, включая слово «postToSlack», или имеющему определенное поле json, например «slack»): правда»...)
Но я застрял в самом начале своих попыток: сначала я пытаюсь реализовать самую основную задачу: отправить ВСЕ журналы облачных часов, записанные, когда выполняются мои лямбды (через console.logs, размещенные внутри функций лямбды) SQS (почему? Потому что я сначала пытаюсь сделать простейшую вещь, прежде чем сложить с фильтрацией, какой журнал отправлять, а какой - не отправлять).
Итак, я создал Правила Cloudwatch> Событие> Шаблон события, как показано ниже:
{
"source": [
"aws.logs"
]
}
и в качестве цели я выбрал SQS, а затем очередь, которую создал.
Но когда я запускаю, например, свои лямбды, они появляются в журналах Cloudwatch, поэтому я ожидал, что содержимое журнала будет «отправлено» в очередь, но ничего не видно в SQ при опросе / проверке содержимого очередь.
Есть ли что-то, что я неправильно понимаю в правилах CloudWatch?
ОБЪЯСНЕНИЕ КОНТЕКСТА
У меня есть лямбды, которые каждый час массово срабатывают (в моем масштабе :), примерно от 300 до 500 казней за 1 или 2 минуты.
Я хочу отслеживать на Slack все их console.logs (я регистрирую реальные сообщения об ошибках error.stack javascript, а также чисто информативные сообщения, такие как результат вывода лямбды "Отчетная карточка лямбды: company = Apple, location = cupertino .. ".).
Я мог бы просто использовать http-вызов Slack для каждой лямбды, но Slack для входящих ловушек имеет ограничение около 1 запроса в секунду , после этого вы получаете 429 ошибок, если вы пытаетесь отправить более 1 входящий webhook в секунду ... Итак, я подумал, что мне нужно использовать очередь, чтобы у меня не было более 300 лямбд, записывающих в Slack в одну секунду, а вместо этого управлял потоком из AWS в Slack в централизованной очереди с именем slackQueue.
Моя идея состоит в том, чтобы отправить определенные журналы (см. Ниже) из Cloudwatch в SQS slackQueue, а затем использовать эту очередь SQS в качестве лямбда-триггера и отправлять с этим лямбда-пакетами 10 сообщений (максимум, разрешенный AWS; для меня 1 message = 1 console.log) объединяется в одну большую строку или массив (что угодно) для отправки его на мой канал Slack (кстати, вы можете объединить и отправить за один вызов до 100 сообщений Slack на основе ограничений Slack, поэтому, если я смогу обработать 100 сообщений = console.log и объединение Я бы хотел, но текущий предел размера пакета для AWS, я думаю, равен 10), таким образом, гарантируя, что я не отправляю более 1 «запроса» в секунду в Slack (этот запрос имеет содержимое 10 console.logs).
Когда я говорю выше "определенные журналы", это означает, что я фактически не хочу, чтобы ВСЕ журналы отправлялись в очередь (потому что я не хочу их в Slack): на самом деле я не хочу чисто «отладочные» сообщения типа console.log("entered function foo").
, которые полезны во время разработки, но не имеют отношения к Slack.
Что касается некоторых комментариев: я не хочу использовать, насколько я понимаю (не эксперт по AWS), сигналы тревоги облачных часов или фильтры метрик, потому что они довольно дорогие (я бы их срабатывал сотни раз в час) и на самом деле не соответствует моим потребностям: я не хочу читать на Slack только тогда, когда возникает критическая проблема или «проблема» (например, CPU> xxx ...), но действительно отправлять регулярные отфильтрованные поток «почти» всех моих журналов в Slack для чтения журналов внутри Slack, а не внутри AWS, поскольку Slack - это инструмент, открытый весь день, который используется для централизованного размещения журналов / сообщений, поступающих из других источников, кроме AWS, и что красивое форматирование сообщений вложения Slack лучше усваивается нами. Конечно, последняя лямбда (та, которая отправляет сообщения в slack) будет делать небольшое форматирование, чтобы добавить курсив / полужирный / и т. Д., А также уценку, необходимую для slack, чтобы красиво отформатировать «Slack attachments», но это не самая сложная проблема. здесь :) 1031 *