Как проверить текущее время работы экземпляра AWS EC2
Каков наилучший способ проверить время работы экземпляра EC2 и, возможно, отправить оповещения, если время работы, например, превышает N часов? Как это можно организовать с помощью инструментов AWS по умолчанию, таких как CloudWatch, Lambda?
3 ответа
Одним из вариантов является использование AWS CLI и получение времени запуска. Из этого рассчитайте время безотказной работы и отправьте его в Cloudwatch:
aws ec2 describe-instances --instance-ids i-00123458ca3fa2c4f --query 'Reservations[*].Instances[*].LaunchTime' --output text
Выход
2016-05-20T19:23:47.000Z
Другой вариант - периодически запускать cronjob
скрипт который:
- звонки
uptime -p
команда - преобразует вывод в часы
- отправляет результат в Cloudwatch с измерением
Count
После добавления cronjob
:
- добавить тревогу Cloudwatch, которая отправляет оповещение, когда это значение превышает пороговое значение или если имеются НЕДОСТАТОЧНЫЕ ДАННЫЕ
- НЕДОСТАТОЧНЫЕ ДАННЫЕ означают, что машина не работает
Вот еще один вариант, который можно сделать только в CloudWatch.
Создайте сигнал тревоги для своего экземпляра EC2 с помощью чего-то вроде CPUUtilization - вы всегда получите значение для этого, когда экземпляр работает.
- Установите будильник на>= 0; это гарантирует, что всякий раз, когда экземпляр работает, он совпадает.
- Установите период и последовательные периоды в соответствии с требуемым временем безотказной работы оповещения, например, для 24 часов вы можете установить период равным 1 часу, а последовательные периоды равным 24.
- Установите действие для отправки уведомления, когда будильник находится в состоянии ALARM.
Теперь, когда экземпляр был меньше установленного времени, аварийный сигнал будет в состоянии НЕДОСТАТОЧНЫЕ ДАННЫЕ. Как только он будет включен в рабочее время, он перейдет в состояние ALARM, и уведомление будет отправлено.
Я бы порекомендовал изучить "AWS" родной способ сделать это.
Если он в основном отправляет метрики уровня ОС (например, "Свободная память", "Время безотказной работы", "Использование диска" и т. Д.) В Cloudwatch, то этого можно достичь, следуя инструкциям: Это устанавливает Агента Cloudwatch Logs на ваших экземплярах EC2. http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
Самое замечательное в этом то, что вы получаете отображение метрик в журналах Cloudwatch (см. Прилагаемое изображение, которое показывает интерфейс CW Logs в консоли AWS.).