Как проверить состояние экземпляра EC2, запущенного из недавно созданного AMI? - PullRequest
0 голосов
/ 20 февраля 2020

Как проверить, работает ли экземпляр EC2 / работает ли одна конкретная служба с помощью boto3. Экземпляр создается из недавно созданного AMI.

Ответы [ 3 ]

0 голосов
/ 20 февраля 2020

Чтобы проверить, работает ли экземпляр EC2 вверх или вниз:

import sys
import boto3


ec2 = boto3.client('ec2')
if sys.argv[1] == 'ON':
    response = ec2.monitor_instances(InstanceIds=['INSTANCE_ID'])
else:
    response = ec2.unmonitor_instances(InstanceIds=['INSTANCE_ID'])
print(response)

Чтобы проверить работоспособность экземпляра:

# Boto 2.x
for status in ec2_connection.get_all_instance_statuses():
    print(status)

# Boto 3
for status in ec2.meta.client.describe_instance_status()['InstanceStatuses']:
    print(status)

Для получения дополнительной информации см .: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/migrationec2.html

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/ec2-example-managing-instances.html

Обновление: (чтобы проверить, запущена или нет конкретная служба в EC2)

  1. Вы можете опубликовать sh пользовательскую метрику c в CloudWatch в форме «сердцебиения».
  2. У вас есть небольшой скрипт, работающий через cron на вашем сервере, проверяющий список процессов чтобы увидеть, работает ли my_service и, если он есть, позвоните put-metric-data в CloudWatch.
  3. Метри c может быть так же просто, как нажать цифру "1" в вашем пользовательском метри c в CloudWatch.
  4. Настройка будильника CloudWatch, который срабатывает, если среднее значение для метри c падает ниже 1
  5. . Установите период будильника> = период, который запускает крон, например, cron запускается каждые 5 минут, срабатывает сигнализация, если он видит, что среднее значение ниже 1 в течение двух 5-минутных периодов.
  6. Убедитесь, что вы Вы также обрабатываете ситуацию, в которой metri c не публикуется (например, cron не запускается или вся машина умирает). Вы хотите настроить оповещение в случае, если отсутствует метри c. (см. здесь: AWS Сигнал пульса Cloudwatch )
  7. Имейте в виду, что пользовательский метри c добавит дополнительную стоимость 50 c к вашему счету AWS (не большое дело для одного метри c - но уравнение радикально меняется, если вы хотите набрать sh сто / тысячи метрик - т.е. приятно знать, что это не бесплатно, как можно было бы ожидать)
  8. Вы должны создайте topi c в службе SNS (Simple Notification Service) в AWS. Там вы должны указать свой адрес электронной почты в SNS, на который вы будете получать уведомление.

Ссылки:

  1. Используйте cloudwatch, чтобы определить, является ли услуга linux работает
  2. AWS Cloudwatch Alarm Heartbeat Alarm
0 голосов
/ 20 февраля 2020

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

Переместите создание вашего экземпляра в шаблон CloudFormation и определите CreationPolicy, как описано в AWS Сообщение в блоге: https://aws.amazon.com/blogs/devops/use-a-creationpolicy-to-wait-for-on-instance-configurations/

TL; DR: при запуске экземпляра он запустит скрипт, который проверит, работает ли какой-либо нужный вам сервис, а затем Сигнал CloudFormation "Все системы go". Если он не сигнализирует во времени, экземпляр помечается как CREATE_FAILED и удаляется.

0 голосов
/ 20 февраля 2020

Вы можете использовать следующие Экземпляр :

ec2 = boto3.resource('ec2')

instance = ec2.Instance('instance_id')

print(instance.image_id)

Сравнить instance.image_id с идентификатором ожидаемого изображения.

Чтобы проверить, запущен ли экземпляр уже , используйте EC2.Waiter.InstanceRunning официант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...