Как я могу написать предупреждение, когда мое использование Amazon Web Service превышает определенную сумму?
Мы используем S3, SimpleDB и SQS в довольно сложном проекте.
Я хотел бы иметь возможность автоматически отслеживать их использование, чтобы быть уверенным, что мы внезапно не потратим большие суммы денег, когда мы не собирались (возможно, из-за ошибки).
Есть ли способ прочитать показатели использования всех веб-сервисов Amazon и / или текущую стоимость аккаунта в реальном времени в долларах из сценария?
Или какой-либо сервис или скрипт, который предоставляет оповещения на основе этого?
3 ответа
Amazon только что объявил, что теперь вы можете "устанавливать тревоги для любой метрики, которую отслеживает Amazon CloudWatch " (загрузка ЦП, чтение и запись на диске, сетевой трафик и т. Д.). Кроме того, все экземпляры теперь поставляются с базовым мониторингом бесплатно.
Мы только что выпустили сервис Lab Management, который добавляет политики к использованию AWS: ограничения по времени, максимальное количество экземпляров, максимальные размеры компьютеров и т. Д. Вы можете попробовать это и посмотреть, поможет ли это: http://labslice.com/. Поскольку это стартап, мы действительно ценим отзывы о том, как решать такие проблемы, как ваша (например, напишите мне, если вы считаете, что приложение может быть лучше модифицировано в соответствии с вашими требованиями).
Я не верю, что существует какой-либо прямой способ контролировать расходы AWS по отношению к доллару. Я сомневаюсь, что Amazon предоставляет API для получения подробных метрик использования, так как очевидно, что они не будут заинтересованы в том, чтобы помочь вам сократить расходы. На самом деле я столкнулся с двумя случаями, когда в компании (банке) возникли неожиданные расходы из-за неправильно настроенных сценариев, поэтому я знаю, что это может быть проблемой.
Я столкнулся с той же проблемой с экземплярами EC2, но решил ее по-другому - вместо того, чтобы отслеживать экземпляры, я заставил их автоматически убивать себя через определенное время. Из вашего описания это звучит так, как будто это не практично в вашей среде, но я подумал, что поделюсь на всякий случай, если это поможет. Мой AMI был основан на Fedora, поэтому я создал следующий скрипт bash, зарегистрировал его как службу и запустил при запуске:
#!/bin/bash
# chkconfig: 2345 68 20
# description: 50 Minute Kill
# Source Functions
. /etc/rc.d/init.d/functions
start()
{
# Shut down 50 minutes after starting up
at now + 50 minutes < /root/atshutdown
}
stop()
{
# Remove all jobs from the at queue because I'm not using at for anything else
for job in $(atq | awk '{print $1}')
do
atrm $job
done
}
case "$1" in
start)
start && success || failure
echo
;;
stop)
stop && success || failure
echo
;;
restart)
stop && start && success || failure
echo
;;
status)
echo $"`atq`"
;;
*)
echo $"Usage: $0 {start | stop | restart}"
RETVAL=1
esac
exit $RETVAL
Вы можете подумать о том, чтобы сделать что-то подобное, чтобы удовлетворить ваши потребности. Если вы сделаете это, будьте особенно внимательны, чтобы остановить службу, прежде чем изменять образ, чтобы экземпляр не закрывался до того, как вы получите возможность переупаковать.
Если вы хотите, вы можете выключить экземпляры в определенное время (после того, как все уйдут с работы?), Или вы можете передать длительность поддержки / время выключения через -d
или же -f
параметры для ec2-run-instances
и разобрать это в сценарии.