Как настроить CloudWatch для обнаружения отказа инстанса EC2?

У меня есть приложение, работающее на AWS. Как настроить Amazon CloudWatch, чтобы он уведомлял меня, когда инстанс EC2 выходит из строя или перестает отвечать на запросы?

Я просмотрел экраны CloudWatch, и оказалось, что вы можете отслеживать определенную статистику, такую ​​как использование ЦП или диска, но я не видел способа отслеживать событие, такое как «экземпляр получил HTTP-запрос, и ему потребовалось более X секунд для реагировать."


person ccleve    schedule 17.02.2012    source источник


Ответы (8)


Amazon Route 53 Health Check — правильный инструмент для работы.

Route 53 может отслеживать работоспособность и производительность вашего приложения, а также веб-серверов и других ресурсов.

Вы можете настроить проверку ресурсов HTTP в Route 53, которая будет запускать уведомление по электронной почте, если сервер не работает или отвечает с ошибкой.

http://eladnava.com/monitoring-http-health-email-alerts-aws/

person Steven Cogorno    schedule 17.04.2014
comment
Спасибо, Стивен, я не знал, что вы можете это сделать (даже для доменов не на Route 53). 50 центов за проверку работоспособности в месяц, что намного дешевле, чем pingdom и запуск собственного экземпляра EC2, если их всего один или два. - person spidie; 04.06.2015

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

При создании будильника вы можете добавить «действие» для отправки уведомления. AWS обрабатывает уведомления через SNS (Simple Notification Service). Вы можете подписаться на тему уведомлений, и тогда вы получите электронное письмо для вашего будильника.

Для метрик EC2, таких как использование ЦП или диска, это руководство из документации AWS: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/US_AlarmAtThresholdEC2.html

Как уже было сказано, используйте ELB для мониторинга HTTP.

Это список доступных показателей для ELB: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_MonitoringLoadBalancerWithCW.html#available_metrics

Чтобы ответить на ваш конкретный вопрос, для мониторинга X секунд для ответа http вы должны настроить сигнал тревоги для отслеживания ELB «Задержка».

person sorohan    schedule 02.01.2014

Мониторинг CloudWatch так же, как вы обнаружили. Вы сможете сделать вывод о том, что один из ваших экземпляров заморожен, взглянув на метрики, но CloudWatch, например, этого не сделает. отправить вам электронное письмо, например, когда ваше приложение не работает или работает слишком медленно.

Если вы ищете какое-то уведомление, когда ваше приложение или экземпляр не работают, я предлагаю вам использовать службу мониторинга. Pingdom — хороший вариант. Вы также можете настроить новый экземпляр на AWS и установить инструмент мониторинга, например Nagios, который я предпочитаю. вариант.

Передовой опыт, который всегда полезен в долгой дороге: использование балансировки нагрузки (Amazon ELB), более один экземпляр, на котором запущено ваше приложение, автомасштабирование (когда экземпляр не работает, Amazon автоматически запустит новый и будет поддерживать ваше соглашение об уровне обслуживания) и настраиваемый мониторинг.

Моя команда долгое время использовала собственный скрипт мониторинга, и мы всегда знали о сбоях, как только они происходили. По сути, если бы у нас было два узла, на которых работало наше приложение, узел 1 отправлял HTTP-запросы узлу 2, а узел 2 — узлу 1. Если какой-либо запрос занимал больше, чем ожидалось, или возвращал неожиданный статус HTTP или тело ответа, сценарий отправлял электронное письмо на узел 2. системные администраторы. В настоящее время мы полагаемся на более надежные подходы, такие как Nagios, который может даже отслеживать содержимое операционной системы (потоки и т. д.), серверы приложений (состояние пулов соединений и т. д.) и так далее. Это стоит каждого цента, вложенного в его настройку.

person Viccari    schedule 18.02.2012

CloudWatch недавно добавил метрики «проверки состояния», которые ответят на один из ваших вопросов о том, отключен ли экземпляр или нет. Он не будет делать запрос к вашему веб-серверу, а будет проверять систему. Как следует из предыдущего ответа, используйте ELB для проверки работоспособности HTTP.

person Kurst Ursan    schedule 10.03.2013

У вас всегда может быть другой экземпляр для инструментов/тестирования, этот экземпляр будет пробовать HTTP-запрос на основе расписания и измерять время отклика, затем вы можете опубликовать это время отклика с помощью CloudWatch и установить сигнал тревоги, когда оно превысит определенный порог.

Вы даже можете сделать это из самого экземпляра.

person Radius    schedule 19.06.2012

Как упоминал выше Курст Урсан, использование метрик «Проверка состояния» — это правильный путь. В некоторых случаях вы не сможете просмотреть эти метрики (например, если вы используете AWS OpsWorks), поэтому вам придется сообщать об этой настраиваемой метрике самостоятельно. Однако вы можете настроить оповещение, основанное на метрике, которая всегда соответствует (в состоянии OK), и иметь срабатывание оповещения, когда состояние изменяется на состояние «НЕДОСТАТОЧНО ДАННЫХ». Технически это означает, что CloudWatch не может определить, нормально ли состояние. или ALARM, потому что он не может связаться с вашим экземпляром, AKA ваш экземпляр находится в автономном режиме.

person Tarek Koudsi    schedule 18.01.2014

Существует множество способов получить информацию о работоспособности экземпляра. Вот пара.

  1. Следите, например, за проверками состояния инстанса и событиями EC2 (запланированные простои) в API EC2. Вы можете опросить их и отправить в Cloudwatch, чтобы создать сигнал тревоги.

  2. Создайте простой демон на сервере, который каждую секунду записывает данные в DynamoDB (детализация лучше, чем у Cloudwatch). Пусть второй процесс запрашивает пульс и предупреждает об отсутствии.

  3. Поместите все экземпляры в балансировщик нагрузки с открытым фиктивным портом, который дает ответ TCP. Настройте проверки работоспособности TCP на ELB и оповещайте о неработоспособных экземплярах.

Если вы не используете такой продукт, как Blue Matador (автоматически уведомляет вас о производственных проблемах), на самом деле довольно отвратительно устанавливать что-то подобное, не говоря уже о его обслуживании. Тем не менее, если вы собираетесь в будущем и вам нужна помощь в начале работы с Cloudwatch (терминология, оповещения, журналы и т. д.), начните с этого блога: Как отслеживать Amazon EC2 с помощью CloudWatch

person mbarlocker    schedule 09.07.2019

Вы можете использовать правило CloudWatch Event Rule для мониторинга всякий раз, когда какой-либо инстанс EC2 выходит из строя. Вы можете создать правило события из консоли CloudWatch следующим образом:

В консоли CLoudWatch выберите «События» -> «Правило».

Для шаблона события в названии службы выберите EC2. Для типа события выберите EC2 Instance State-change Notification. Для определенных состояний выберите Stopped.

В таргетах Выберите любую ранее созданную тему SNS для отправки уведомления!

Источник: создание правила — https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatch-Events-Input-Transformer-Tutorial.html#input-transformer-create-rule

Это не совсем сигнал тревоги CloudWatch, однако он служит для мониторинга/уведомления.

person Ankit25    schedule 13.02.2020