Cloudwatch Log Alert - Как включить данные об ошибке / исключении / трассировке стека в уведомление по электронной почте

Я только что настроил журналы Cloudwatch на своих экземплярах ec2, и пока мне это нравится. Я также установил оповещения для определенных ключевых слов, например «ERROR». Хотя оповещение по электронной почте, похоже, работает нормально, мне было интересно, есть ли способ настроить оповещение по электронной почте, чтобы сделать его немного кратким и информативным. В частности, я хочу

  1. Избавьтесь от шаблонного текста в электронном письме с предупреждением.

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

Прямо сейчас письмо с предупреждением выглядит так:

Вы получили это электронное письмо, потому что ваш Amazon CloudWatch Alarm «App-Error-Alarm» в регионе Восток США - Северная Вирджиния перешел в состояние ALARM, потому что «Порог пересечен: 1 точка данных (1.0) больше или равна пороговому значению. (1.0) ". в «Вторник, 7 февраля 2017 г., 16:39:43 UTC».

Просмотрите этот сигнал тревоги в Консоли управления AWS: https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#s=Alarms&alarm=App-Error-Alarm

Сведения о тревоге: - Название: App-Error-Alarm - Описание: Ошибки в app.log - Изменение состояния: INSUFFICIENT_DATA -> ALARM - Причина изменения состояния: Пороговое значение пересечено: 1 точка данных (1.0) была больше или равна пороговому значению ( 1.0). - Отметка времени: вторник, 7 февраля 2017 г., 16:39:43 UTC - Учетная запись AWS: ‹>

Порог: - Аварийный сигнал находится в состоянии ТРЕВОГА, когда метрика GreaterThanOrEqualToThreshold 1.0 в течение 300 секунд.

Контролируемая метрика: - MetricNamespace: LogMetrics - MetricName: ERROR - Размеры: - Период: 300 секунд - Статистика: Сумма - Единица: не указана

Действия по изменению состояния: - ОК: - ТРЕВОГА: [arn: aws: sns: us-east-1: ‹>: support] - INSUFFICIENT_DATA:

Я бы хотел что-то вроде

Тревога: приложение-ошибка-тревога

Ключевое слово: "ОШИБКА"

Причина: ОШИБКА 2017-02-07 07: 31: 47,375 [SimpleAsyncTaskExecutor-5] com.app.server.rest.Watcher: javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: handshake_failure

Оно короткое, сладкое и мгновенно подсказывает мне, требует ли это моего немедленного внимания. Можно ли это сделать без написания кода, как это предлагается здесь ?


person Bhardwaj    schedule 07.02.2017    source источник
comment
Насколько я знаю, этого делать нельзя.   -  person Mark B    schedule 07.02.2017


Ответы (2)


У вас есть эта проблема, потому что вы настроили сигнал тревоги и предназначен для агрегированных данных, а не для конкретной записи журнала. Вы настраиваете его для какой-то метрики (количество записей журнала с ключевым словом ERROR).

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

Чтобы настроить потоковую передачу журналов, перейдите в Lambda в консоли AWS и создайте новую функцию из схемы с именем "cloudwatch-logs-process-data". Он имеет базовую структуру и легко настраивается под ваши нужды.

введите описание изображения здесь

person Igor Romanov    schedule 20.10.2018
comment
Что, если у нас много лямбда-выражений, и мы хотим получать уведомления из социальных сетей о любых ошибках, зарегистрированных в любой из них? Нужна ли нам Lambda с подпиской на CloudWatch для каждой группы журналов? - person Charlie Schliesser; 13.04.2020
comment
@CharlieSchliesser - вы можете установить триггер, который будет вызываться на /aws/lambda, а затем установить фильтр в соответствии с тем, что вы хотите / должны слушать. С помощью этого метода вы можете стать довольно выразительным и легко получить широкое освещение. docs.aws.amazon.com/AmazonCloudWatch/latest/logs/ - person Rob Schmuecker; 01.05.2020
comment
@RobSchmuecker Вы можете объяснить, как запускать / aws / lambda? Я искал, но не нашел. Спасибо. - person Todd Hoff; 03.06.2020
comment
А как насчет затрат? Кажется, это будет запускать функцию для каждого отдельного сообщения журнала. - person Fábio Paiva; 15.09.2020
comment
@ FábioPaiva нет, только для записей журнала, соответствующих фильтру. Например все ОШИБКИ - person Igor Romanov; 06.10.2020

Вы можете настроить будильники Cloudwatch, используя Пакет настройки журналов Cloudwatch, предоставленный Лаборатории AWS.

Когда вы получаете сигнал будильника, вам нужно достаточно информации, чтобы решить, нужно ли ему немедленно уделить внимание. Вы также хотите настроить текст аварийного сигнала в соответствии с рабочими потребностями. CloudWatch Logs Customize Alarms - это функция Lambda, которая помогает читать журналы из CloudWatch Logs во время тревоги и отправлять индивидуальное электронное письмо через SES.

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

person Rodrigo M    schedule 19.12.2017