Как я могу написать предупреждение, когда мое использование Amazon Web Service превышает определенную сумму? - PullRequest
6 голосов
/ 02 марта 2010

Мы используем S3, SimpleDB и SQS в довольно сложном проекте.

Я бы хотел иметь возможность автоматически отслеживать их использование, чтобы быть уверенным, что мы внезапно не потратим большие суммы денег, когда не собираемся (возможно, из-за ошибки).

Есть ли способ прочитать показатели использования всех веб-служб Amazon и / или текущую стоимость аккаунта в долларах в реальном времени из сценария?

Или какой-либо сервис или скрипт, который предоставляет оповещения на основе этого?

Ответы [ 3 ]

3 голосов
/ 03 декабря 2010

Amazon только что объявил, что теперь вы можете "устанавливать сигналы тревоги для любого показателя, который Amazon CloudWatch отслеживает" (загрузка ЦП, чтение и запись на диск, сетевой трафик и т. Д.). Кроме того, все экземпляры теперь поставляются с базовым мониторингом бесплатно.

2 голосов
/ 11 августа 2010

Мы только что выпустили сервис Lab Management, который добавляет политики к использованию AWS: ограничения по времени, максимальное количество экземпляров, максимальные размеры компьютеров и т. Д. Вы можете попробовать это и посмотреть, поможет ли это: http://LabSlice.com. Как это является стартапом, мы действительно ценим отзывы о том, как решать такие проблемы, как ваша (например, напишите мне, если вы считаете, что приложение может быть лучше модифицировано в соответствии с вашими требованиями).

Я не верю, что существует какой-либо прямой способ контролировать затраты AWS по отношению к доллару. Я сомневаюсь, что Amazon предоставляет API для получения подробных метрик использования, поскольку очевидно, что они не будут заинтересованы в том, чтобы помочь вам сократить расходы. На самом деле я столкнулся с двумя случаями, когда в компании (банке) возникли неожиданные расходы из-за неправильно настроенных сценариев, поэтому я знаю, что это может быть проблемой.

1 голос
/ 14 апреля 2010

Я столкнулся с той же проблемой с экземплярами 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 и разобрать его в сценарии.

...