Jak mogę monitorować codzienne wydatki na AWS?

26

Nasza infrastruktura jest w AWS. Chcę otrzymywać codzienny raport na temat wydatków wydanych poprzedniego dnia. Jak najlepiej to zrobić?

Sabya
źródło

Odpowiedzi:

20

Aktualizacja

AWS właśnie ogłosiło ogólną dostępność funkcji monitorowania szacunkowych opłat za pomocą alertów rozliczeniowych za pośrednictwem Amazon CloudWatch (widocznie jest dostępna dla kont premium AWS już od końca 2011 r., Patrz odpowiedź Daniela Lopeza na Czy istnieje sposób, aby ustawić Amazon AWS limit rozliczeniowy? ):

Regularnie szacujemy całkowitą miesięczną opłatę za każdą usługę AWS, z której korzystasz. Gdy włączysz monitorowanie swojego konta, zaczniemy przechowywać prognozy jako dane CloudWatch, gdzie będą one dostępne przez zwykły okres 14 dni. [...]

Jak opisano we wstępnym poście na blogu, możesz zacząć od korzystania z alertów rozliczeniowych, aby poinformować Cię, kiedy rachunek AWS będzie wyższy niż oczekiwano , zobacz Monitorowanie szacunkowych opłat za pomocą Amazon CloudWatch, aby uzyskać więcej informacji na temat tej funkcji.

Jest to już dość przydatne w przypadku wielu podstawowych potrzeb, jednak używanie interfejsów API CloudWatch do samodzielnego pobierania przechowywanych metryk (patrz GetMetricStatistics ) faktycznie pozwala na sterowanie dowolnymi przepływami pracy i logiką biznesową na podstawie tych danych, i oczywiście można wygenerować dzienny raport na ile wydano również poprzedniego dnia .

W odniesieniu do tego drugiego podkreślono również zakres tej oferty:

Należy zauważyć, że są to szacunki, a nie prognozy . Szacunek w przybliżeniu szacuje dotychczasowy koszt użytkowania AWS w bieżącym cyklu rozliczeniowym i będzie wzrastał w miarę dalszego korzystania z zasobów . [...] Nie uwzględnia trendów ani potencjalnych zmian w schemacie użytkowania AWS. [moje podkreślenie]

Oznacza to, że szczegółowość raportowanych wskaźników nie została jeszcze przeanalizowana (widzę punkty danych co 4 do 8 godzin, ale niekoniecznie aktualizowane wartości za każdym razem, jak można się spodziewać), więc uzyskanie wystarczająco dokładnego raportu dziennego może wymagać statystyczne przetwarzanie końcowe.


Pierwsza odpowiedź

Niestety jest to mniej oczywiste, niż mogłoby się wydawać, zwłaszcza biorąc pod uwagę, że pożądane dane można sprawdzić ręcznie za pośrednictwem konta. Można się spodziewać dwóch opcji monitorowania:

  • powiadomienia przez e-mail / RSS / itp.
  • Dostęp API do danych

Ani AWS, ani żaden inny sprzedawca IaaS / PaaS / SaaS, o którym wiem, nie oferuje obecnie dostępu API do swoich danych księgowych (być może z powodu potencjalnych konsekwencji finansowych / prawnych), dokonując jakiejkolwiek formy integracji stron trzecich (co byłoby łatwe do rób to w dzisiejszych czasach) w najlepszym przypadku uciążliwe, o ile musisz najpierw skorzystać z funkcji skrobania stron internetowych, aby odzyskać dane w pierwszej kolejności.

Na szczęście niedawno pojawiła się nowa oferta z Cloudability [link usunięty po zaprzestaniu darmowego poziomu], aby zrobić to dla Ciebie w profesjonalny i niezależny od dostawcy sposób, korzystamy z niej z wielkim sukcesem już w AWS - obecnie otrzymywać codzienny (lub rzadziej) raport dotyczący miesięcznych wydatków , tzn. jeszcze nie podzielony na dzienne wydatki. Dodanie dziennego wzrostu byłoby oczywiście trywialne, więc mam nadzieję i oczekuję, że z czasem udostępnią więcej takich informacji.

Ich podejście do wyceny [link usunięty po zakończeniu bezpłatnej warstwy] jest również odświeżające (mimo że jest oczywiste) i po prostu powiązane z własnymi wydatkami w chmurze, dlatego powinno się zwrócić, gdy tylko uświadomisz sobie odpowiedni potencjał oszczędności (nie naliczają opłat cokolwiek, jeśli wydasz mniej niż 2,5 tys. USD / mc).
Aktualizacja 20121016 : Niestety, Cloudability zmienił ich model cenowy na bardziej powszechny, który wciąż obejmuje warstwę bezpłatną (i ogólnie jest rozsądnie wyceniony), ale usuwa dostęp do zaawansowanych funkcji w niej, które uważałem za odświeżająco uczciwe i inteligentne podejście dla użytkowników z małymi budżetami, którzy wciąż mogą być mnożnikami w innych krajach lub ulepszać się, gdy do tego dojdzie.

Aktualizacja 20150115: Niestety, Cloudability wybrał ścieżkę wielu dostawców freemium SaaS i ostatecznie całkowicie zrezygnował z bezpłatnej warstwy: od 1 lutego nie będziemy już oferować wersji Cloudability Free, której używasz dzisiaj .

Aktualizacja 20120427

Poprzednie zastrzeżenie (zachowane w celach informacyjnych poniżej) dotyczące wymogu posiadania głównych poświadczeń AWS nie ma już zastosowania - AWS niedawno wprowadziło nowe funkcje IAM: zarządzanie hasłami i dostęp do stron z raportami aktywności i użytkowania :

Ta nowa funkcja umożliwia tworzenie osobnych i odrębnych użytkowników IAM do celów biznesowych i technicznych. Możesz przyznać użytkownikom biznesowym dostęp do stron Aktywności na koncie i / lub raportów użytkowania na stronie internetowej AWS, aby umożliwić im dostęp do danych rozliczeniowych i dotyczących użytkowania, nie dając im dostępu do innych zasobów AWS, takich jak instancje EC2 lub pliki w S3

Cloudability również to teraz zintegrowało, więc nie musisz już przekazywać im swoich głównych danych uwierzytelniających AWS ani wkładać dodatkowego wysiłku, aby ustanowić skonsolidowane rozliczenia tylko po to, aby uzyskać wgląd w wydatki w chmurze, zobacz Jak skonfigurować Amazon IAM (zarządzanie kontem tożsamości) ), aby uzyskać szczegółowe informacje.

Dawne zastrzeżenie

Jest jednak jedno zastrzeżenie, o którym należy pamiętać z góry:

Aby uzyskać dostęp do swoich danych, musisz przekazać im swoje główne dane uwierzytelniające AWS, ponieważ w przeciwnym razie nie mogą one oczywiście zeskrobać twojego konta. W szczególności w przypadku AWS nadal możesz tego uniknąć, ułatwiając Skonsolidowane rozliczenia , w których konsolidujesz płatności dla wielu kont Amazon AWS [...] poprzez wyznaczenie jednego konta płatniczego , które z kolei nie ma dostępu do twoich zasobów obliczeniowych i danych.

Steffen Opel
źródło
Właśnie zarejestrowałem się w Cloudability, ale w ich poczcie nie mogłem dowiedzieć się, ile wydaliśmy wczoraj (lub w ciągu ostatnich 24 godzin). Podają tylko miesięczne szacunki i ile wydano do tej pory.
Sabya,
2
@sabya - oczywiście masz rację, zrealizowałem tylko codzienny raport i przeoczyłem ten dodatkowy wymóg, przepraszam (zaktualizowałem odpowiedź, aby to odzwierciedlić)! Oczywiście, po 2. dniu samodzielne wykonanie matematyki będzie trywialne, chociaż posiadanie jej bezpośrednio w poczcie byłoby oczywistą poprawą i oczywiście wygodniejsze.
Steffen Opel
12

Korzystając z narzędzi awscli , możesz uzyskać sumę miesięczną:

$ aws --region us-east-1 cloudwatch get-metric-statistics \
    --namespace "AWS/Billing" \
    --metric-name "EstimatedCharges" \
    --dimension "Name=Currency,Value=USD" \
    --start-time $(date +"%Y-%m-%dT%H:%M:00" --date="-12 hours") \
    --end-time $(date +"%Y-%m-%dT%H:%M:00") \
    --statistic Maximum \
    --period 60 \
    --output text | sort -r -k 3 | head -n 1 | cut -f 2

2494.47

Sumy z dwóch różnych dni można odjąć, aby uzyskać dzienną różnicę. Lub oszacowanie można uzyskać za jednym razem, zwiększając okno czasowe ( end-time- start-time) do 24 godzin i odejmując najwcześniejszy punkt danych od najnowszego.

Uwagi:

  • zakłada, że ​​włączyłeś monitorowanie swoich szacunkowych opłat
  • zakłada, że ​​masz GNU date(dla innych dates, np. na OSX, date -v-12Hmoże działać)
  • Twoja waluta może się różnić
  • Amazon aktualizuje metrykę CloudWatch co ~ 4 godziny, więc zapytanie o okno czasowe mniejsze niż 4 godziny może nie zwrócić żadnych punktów danych. Użyłem 12-godzinnego okna, aby być bardziej bezpiecznym.
  • Chciałem dołączyć link do postu na blogu, na którym moja odpowiedź była oparta, ale najwyraźniej potrzebuję 10 punktów reputacji, aby opublikować więcej niż 2 linki. :)
mpavlov
źródło
1
Należy zauważyć, że jedynym obszarem, który działa dla przestrzeni nazw „AWS / Billing”, jest us-east-1. Oderwałem większość włosów, zastanawiając się, dlaczego moje konto z dostępem do rozliczeń uzyskiwało puste wyniki za pośrednictwem interfejsu CLI.
Corey Cole,
Tylko uwaga, że ​​awscli używa botocore i te atrybuty wydają się być dostępne poprzez boto3.readthedocs.io/en/latest/reference/services/…
monkut
Czy istnieje więc sposób, aby uczynić to działaniem w innych regionach?
nh2
4

Jeśli naprawdę potrzebujesz codziennego raportu kosztów, musisz użyć narzędzia „ Raport użytkowania ” na swoim koncie AWS. Możesz poprosić o raport dla każdej usługi, z której korzystasz, w dowolnym okresie czasu, w szczegółowości od godziny do miesiąca. Następnie pobiera plik CSV.

Będziesz musiał wykonać przetwarzanie końcowe tego pliku CSV (ponieważ nie jest to koszt, ale użytkowanie itp.), Ale dostarczy Ci danych, których potrzebujesz, aby mieć codzienny koszt.

Jon
źródło
+1 Tak, rozumiem. Po prostu szukałem łatwiejszej metody.
Sabya,
2

Być może ten moduł Pythona w Github może pomóc w rozpoczęciu pracy: pyec2costs (dla instancji zarezerwowanych lub na żądanie ).

Henk
źródło
2

Pojawiło się całkiem nowe narzędzie Netflix o otwartym dostępie, o nazwie Ice: https://github.com/Netflix/ice, które pozwala na wizualizację szczegółów faktur pobranych za pomocą raportów AWS wygenerowanych w wiadrach S3.

ngeek
źródło
1

Oto prosty skrypt, który pokazuje, jak analizować i analizować szczegółowy plik CSV do rozliczeń AWS:

Powinno być wystarczająco łatwe, aby można było zbudować własną analizę!

oDDsKooL
źródło
1

Korzystanie z polecenia CostExplorer AWS CLI Możliwe jest pobranie danych o kosztach i zużyciu dla konta

Na przykład: jeśli chcesz pobrać koszt od początku miesiąca do dnia dzisiejszego, możesz użyć poniższego polecenia.

aws ce get-cost-and-usage --time-period Start=$(date -u -d "$TODAY" '+%Y-%m-01'),End=$(date -u +"%Y-%m-%d" --date="+1 day") --granularity MONTHLY --metrics UnblendedCost --output text | sort -r -k 3 | head -n 1 | cut -f 2

Wyjście: 615,6129260967

Jeśli chcesz uzyskać koszt CODZIENNIE, użyj GRANULARNOŚCI jak CODZIENNIE, jak pokazano poniżej:

aws ce get-cost-and-usage --time-period Start=$(date -u -d "$TODAY" '+%Y-%m-01'),End=$(date -u +"%Y-%m-%d" --date="+1 day") --granularity DAILY --metrics UnblendedCost
Roopa
źródło
0

Widziałem, jak firmy budują do tego własne narzędzia - w zasadzie wycinają stronę rozliczeniową AWS i na swoim pulpicie nawigacyjnym, wyświetlają bieżący koszt, aw jednym przykładzie dzielą go według dni w minionym miesiącu i wiele, aby uzyskać szacunkowy całkowity koszt miesiąca.

AWS nie oferuje jeszcze interfejsu API rozliczeń (jestem pewien, że będą w przyszłości), ale istnieje kilka usług zewnętrznych, które mogą pomóc. Jednym z nich jest CloudVertical (ujawnienie: pracuję tutaj), gdzie możesz uzyskać dzienny, miesięczny i godzinny koszt, w podziale na usługi i dla wielu kont.

Prawdziwym świętym Graalem dla usługi takiej jak AWS jest jednak nie tylko śledzenie codziennych wydatków, ale także pokazanie wglądu w wydajność (koszt + wykorzystanie = efektywność), a także podkreślenie możliwości uzyskania oszczędności (tj. Czasu użycia wystąpień zarezerwowanych lub spotowych)

Ed Byrne
źródło
Ed Byme ma rację. Istnieje wielu dostawców. Możliwości chmurowania są takie same, jak CloudVertical. Są to jednak bardzo ciężkie i drogie rozwiązania z wieloma funkcjami, których prawdopodobnie nigdy nie będziesz używać. Zamiast tego zastanów się nad BillGist.com (ujawnienie: pracuję tutaj), który jest bardzo tani i wysyła wiadomości e-mail bezpośrednio do skrzynki odbiorczej.
0

Możesz to teraz zrobić za pomocą interfejsu API Eksploratora kosztów. Możesz uzyskać bardzo łatwy dostęp na przykład przez awscli / boto3, ale chodzi o to, że jest to o wiele łatwiejsze niż wcześniej.

cherrysoft
źródło