Ustaw w AWS Budgets jeden budżet miesięczny z dwoma alertami: gdy faktyczne koszty dojdą do 80% kwoty i gdy prognoza na koniec miesiąca przekroczy 100%. Monitorowanie budżetów i powiadomienia e-mail są bezpłatne, a całość zajmie kwadrans.
Drugie zabezpieczenie, Cost Anomaly Detection, na wielu kontach już działa. Gdy wykryje anomalię, wysyła dzienne podsumowanie na adres, na który założono konto AWS. Oba mechanizmy wysyłają e-maile z opóźnieniem sięgającym doby, a sam e-mail niczego nie wyłączy.
Budżet miesięczny krok po kroku
W konsoli otwórz Billing and Cost Management, potem Budgets i Create budget. Wybierz Customize (advanced), żeby ustawić progi samemu:
- Typ Cost budget, okres Monthly, Recurring budget, metoda Fixed. Jeśli rachunek pokrywają kredyty AWS, wyłącz w opcjach budżetu uwzględnianie kredytów, bo domyślnie są wliczane i budżet widzi wtedy koszty bliskie zera.
- Kwota: średnia z trzech ostatnich faktur plus 20%.
- Pierwszy próg (Add an alert threshold): 80, % of budgeted amount, Actual.
- Drugi próg: 100, % of budgeted amount, Forecasted.
- W Email recipients wpisz adres, na który mają przychodzić alerty.
Gdy koszty w połowie miesiąca przyspieszą, alert prognozy przyjdzie na długo przed alertem 80%.
Prognoza potrzebuje około pięciu tygodni danych. Na nowym koncie alert prognozy przez ten czas milczy, więc dodaj trzeci próg: 100% faktycznych kosztów.
Na koncie testowym, które ma się zmieścić w Free Tier, użyj szablonu Zero spend budget. Wyśle e-mail, gdy tylko wydatki wyjdą poza darmowe limity.
Kto powinien dostać e-mail
Na każdy nowo dodany adres AWS Budgets wysyła teraz e-mail weryfikacyjny. Link jest ważny 12 godzin, a żeby potwierdzić adres, trzeba być zalogowanym na konto AWS, które go dodało. Na niepotwierdzony adres alerty nie przychodzą.
Właściciel firmy, który nie loguje się do konsoli, nie potwierdzi więc adresu sam. AWS radzi w takiej sytuacji użyć listy dystrybucyjnej, której skład ustalasz poza AWS. Załóż adres w rodzaju koszty@twojafirma.pl, dopisz do niego siebie i programistę, a programista potwierdzi go raz w konsoli.
Adresy dodane przed wprowadzeniem weryfikacji mają na liście odbiorców status Expiring i działają jeszcze przez okres przejściowy. Dokumentacja nie podaje, jak długo potrwa, więc przy każdym takim adresie kliknij Send Notification i potwierdź go od razu.
Cost Anomaly Detection
Budżet patrzy na sumę z całego miesiąca. Cost Anomaly Detection szuka nietypowych skoków w poszczególnych usługach. AWS sam ją skonfigurował: monitor usług AWS i codzienne podsumowanie e-mailem. Zrobił to na wielu kontach, bez opłat. AWS zgłasza wtedy tylko anomalie powyżej 100 USD, które są zarazem o ponad 40% wyższe od oczekiwanych kosztów.
Przy rachunku rzędu kilkuset dolarów miesięcznie 100 USD to wysoki próg. W Billing and Cost Management otwórz Cost Anomaly Detection, potem zakładkę Alert subscriptions, obniż kwotę w polu Threshold do poziomu, który Cię zaboli, i dopisz ten sam adres grupowy. Jeśli na zakładce Cost monitors nic nie ma, utwórz monitor typu AWS services.
Cost Anomaly Detection może potrzebować do 24 godzin, żeby zauważyć anomalię, a usługę AWS, której dopiero zacząłeś używać, zacznie oceniać po 10 dniach.
Ten sam budżet w Terraformie
Jeśli trzymasz infrastrukturę w Terraformie, dopisz budżet do kodu. Przykład dla zasobu aws_budgets_budget w providerze AWS 6.x:
resource "aws_budgets_budget" "miesieczny" {
name = "miesieczny"
budget_type = "COST"
time_unit = "MONTHLY"
limit_amount = "500"
limit_unit = "USD"
notification {
notification_type = "FORECASTED"
threshold = 100
threshold_type = "PERCENTAGE"
comparison_operator = "GREATER_THAN"
subscriber_email_addresses = ["koszty@twojafirma.pl"]
}
}
Alert przy 80% to drugi blok notification z ACTUAL i 80, a przy kredytach AWS dopisz cost_types { include_credit = false }. Adres i tak trzeba potwierdzić w konsoli.
Czego alerty nie zrobią
Dane w AWS Budgets odświeżają się do trzech razy dziennie, zwykle co 8–12 godzin. Instancja uruchomiona wieczorem może więc pojawić się w alercie dopiero następnego dnia.
Alert też niczego nie zatrzymuje. Do tego służą budget actions: po przekroczeniu progu ograniczają uprawnienia na koncie albo zatrzymują wskazane instancje EC2 i RDS, automatycznie albo po Twoim zatwierdzeniu. Automatyczna akcja na produkcyjnej bazie łatwo zamienia drogi miesiąc w przestój, dlatego w małej firmie ustawiłbym akcje najwyżej z ręcznym zatwierdzeniem.
Starszego alarmu billingowego w CloudWatch przy nowej konfiguracji nie potrzebujesz, bo budżet robi to samo i do tego liczy prognozę.
Co ustawić w małej firmie
Jeśli zapomniana instancja albo zapętlona Lambda podniesie koszty powyżej progu, zobaczysz to w e-mailu zwykle w ciągu jednego, dwóch dni, a nie dopiero na fakturze. Po pierwszym alercie otwórz Cost Explorer, pogrupuj koszty po usłudze i ustaw zakres od początku miesiąca do dziś. Zobaczysz, która usługa urosła.
Alert nie powie Ci natomiast, czy obecny rachunek jest za wysoki, bo budżet ustawiasz na poziomie, do którego jesteś przyzwyczajony. Jeśli koszty rosną powoli od miesięcy, warto je przejrzeć w ramach audytu kosztów AWS.
3 sposoby, w jakie mogę pomóc
- Co to jest EC2-Other na rachunku AWS
Przeczytaj też ten wpis.
- Audyt kosztów AWS
Audyt kosztów AWS w stałej cenie pakietu. Dostajesz listę zmian z kwotą oszczędności przy każdej pozycji, a do konta potrzebuję tylko dostępu do odczytu.
- Napisz do mnie
Albo wprost na przemek@codelevel.pl. Odpowiadam w ciągu 1 dnia roboczego.