6

Używamy S3, SimpleDB i SQS w dość skomplikowanym projekcie.W jaki sposób mogę zakodować alert, gdy moje użycie usługi Amazon Web Service przekracza określoną kwotę?

Chciałbym móc automatycznie śledzić ich wykorzystanie, aby mieć pewność, że nie wydamy nagle dużej ilości pieniędzy, kiedy nie zamierzaliśmy (być może z powodu błędu).

Czy istnieje sposób na odczytanie liczb użytkowania wszystkich Amazon Web Services i/lub bieżącego dolara kosztu w czasie rzeczywistym konta ze skryptu?

Albo jakaś usługa lub skrypt, który generuje alerty na tej podstawie?

+0

Dobre pytanie - uwielbiam EC2, ale zawsze uważałem za irytująco trudny do wymyślenia nawet najdrobniejszych kosztów użytkowania. –

+1

Możesz mieć więcej szczęścia zadając to pytanie na forum wsparcia EC2; proszę zamieścić odpowiedź tutaj, jeśli ją otrzymasz. –

+0

Dzięki Gareth - Wysłałem tu pytanie http://developer.amazonwebservices.com/connect/thread.jspa?threadID=45165 – frabcus

Odpowiedz

1

Wpadłem na ten sam problem z instancjami EC2, ale zaadresowałem to w inny sposób - zamiast monitorować instancje, kazałem je automatycznie zabijać po określonym czasie. Z Twojego opisu wynika, że ​​może to nie być praktyczne w twoim środowisku, ale pomyślałem, że podzielę się nim na wszelki wypadek. Moja AMI było oparte na Fedora, więc stworzył poniższy skrypt bash, zarejestrował go jako usługa, i miał go uruchomić przy starcie:

#!/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 

Można rozważyć robi coś podobnego do własnych potrzeb. Jeśli to zrobisz, zachowaj szczególną ostrożność, aby zatrzymać usługę przed modyfikacją obrazu, aby instancja nie została zamknięta przed uzyskaniem szansy na ponowne połączenie.

Jeśli chcesz, możesz mieć zamknięcie przypadkach co określony czas (gdy wszyscy pozostawia pracę?), Czy można przekazać w podtrzymania czasu długość/wyłączanie poprzez parametry -d lub -f do ec2-run-instances i analizowania do skryptu.

+0

Dziękuję - i zamierzamy sprawić, że wszystkie nasze instancje wymrą po pewnym czasie. Jednak to nadal nie zatrzymuje błędu powodującego, że 10 000 wystąpień i ich ładowanie trwa godzinę. I to nie powstrzymuje innych błędów w korzystaniu z SQS lub S3, które powodują ogromne obciążenia. – frabcus

2

Właśnie wydaliśmy usługę zarządzania laboratorium, która dodaje zasady użytkowania AWS: limity czasu, maksymalną liczbę instancji, maksymalne rozmiary maszyn itp. Możesz spróbować i sprawdzić, czy pomaga: http://LabSlice.com. Ponieważ jest to starcie, naprawdę docenilibyśmy opinie na temat rozwiązywania problemów, takich jak Twój (np. Wyślij mi e-maila, jeśli uważasz, że aplikacja może być lepiej zmodyfikowana, aby spełnić Twoje wymagania).

Nie sądzę, że istnieje bezpośredni sposób kontrolowania kosztów AWS do dolara. Wątpię, by Amazon dostarczył API, aby uzyskać szczegółowe dane na temat użytkowania, ponieważ w oczywisty sposób nie będzie to w ich interesie, aby pomóc w obniżeniu kosztów. Faktycznie natknąłem się na dwa przypadki, w których koszty niespodzianki powstały w firmie (banku) z powodu źle skonfigurowanych skryptów, więc wiem, że to może być problem.

3

Amazon właśnie ogłosił, że możesz teraz "ustawiać alarmy dla dowolnych danych, które monitorują Amazon CloudWatch" (wykorzystanie procesora, odczyty i zapisy dysku, ruch sieciowy itp.). Ponadto wszystkie instancje są teraz wyposażone w podstawowe monitorowanie za darmo.