Come posso monitorare la spesa giornaliera in AWS?


26

La nostra infrastruttura è su AWS. Voglio ottenere un rapporto giornaliero su quanto speso il giorno precedente. Qual'è il miglior modo di farlo?

Risposte:


20

Aggiornare

AWS ha appena annunciato la disponibilità generale della funzionalità per monitorare gli addebiti stimati utilizzando gli avvisi di fatturazione tramite Amazon CloudWatch (a quanto pare era disponibile per gli account premium AWS già dalla fine del 2011, vedi la risposta di Daniel Lopez a Esiste un modo per impostare Amazon AWS limite di fatturazione? ):

Stimiamo regolarmente la tariffa mensile totale per ogni servizio AWS che utilizzi. Quando abiliti il ​​monitoraggio per il tuo account, iniziamo a memorizzare le stime come metriche di CloudWatch, dove rimarranno disponibili per il normale periodo di 14 giorni. [...]

Come indicato nel post di blog introduttivo, puoi iniziare utilizzando gli avvisi di fatturazione per farti sapere quando la tua fattura AWS sarà più alta del previsto , vedi Monitorare i costi stimati utilizzando Amazon CloudWatch per maggiori dettagli su questa funzionalità.

Questo è già abbastanza utile per molte esigenze di base, tuttavia, l'utilizzo delle API CloudWatch per recuperare le metriche memorizzate da soli (vedi GetMetricStatistics ) in realtà ti consente di guidare flussi di lavoro arbitrari e logica aziendale basata su questi dati e, naturalmente, potresti generare un rapporto giornaliero anche su quanto speso il giorno precedente .

Per quanto riguarda quest'ultima, viene sottolineata anche la portata di questa offerta:

È importante notare che si tratta di stime, non di previsioni . La stima approssima il costo dell'utilizzo di AWS fino ad oggi nell'ambito del ciclo di fatturazione corrente e aumenterà mentre continui a consumare risorse . [...] Non tiene conto delle tendenze o dei potenziali cambiamenti nel modello di utilizzo di AWS. [enfasi mia]

Cioè, la granularità delle metriche riportate deve ancora essere analizzata (vedo i punti dati ogni 4-8 ore, ma non necessariamente i valori aggiornati ogni volta, come ci si aspetterebbe in realtà), quindi derivare un rapporto giornaliero sufficientemente preciso potrebbe richiedere elaborazione post statistica.


Risposta iniziale

Purtroppo questo è meno semplice di quanto si possa pensare, soprattutto perché i dati desiderati possono essere controllati manualmente tramite il tuo account. Esistono due opzioni di monitoraggio che ci si aspetterebbe:

  • notifiche via email / RSS / ecc.
  • Accesso API ai dati

Né AWS né altri fornitori IaaS / PaaS / SaaS di cui sono a conoscenza offrono attualmente l'accesso API ai loro dati contabili (forse a causa delle potenziali implicazioni finanziarie / legali), rendendo qualsiasi forma di integrazione di terze parti (che sarebbe facile da al giorno d'oggi) ingombrante nella migliore delle ipotesi, nella misura in cui è necessario ricorrere al web scraping per recuperare i dati in primo luogo.

Fortunatamente una nuova offerta da Cloudability [link rimosso dopo l'interruzione del livello gratuito] è entrata di recente sul palco per fare proprio questo in modo agnostico professionale e di fornitore, la stiamo usando con grande successo già per AWS in particolare - attualmente ricevere comunque un rapporto giornaliero (o meno frequente) sulla spesa mensile , ovvero non ancora ripartito sulla spesa giornaliera. Aggiungere l'incremento giornaliero sarebbe ovviamente banale, quindi spero e mi aspetto che rendano più informazioni come questa disponibili nel tempo.

Anche il loro approccio ai prezzi [link rimosso dopo l'interruzione del livello gratuito] è rinfrescante (nonostante sia ovvio) e semplicemente legato alla tua spesa cloud, quindi dovrebbe pagare da solo non appena realizzi il rispettivo potenziale di risparmio (non fanno pagare nulla se spendi meno di $ 2,5 k / mese).
Aggiornamento 2012-2016 : Sfortunatamente la Cloudability ha cambiato il loro modello di prezzo in uno più comune, che include ancora un livello gratuito (e ha un prezzo ragionevole in generale), ma rimuove l'accesso a funzionalità avanzate al suo interno, che ho considerato un approccio piacevolmente equo e intelligente per gli utenti con budget limitati, che potrebbero essere ancora moltiplicatori altrove o aggiornarsi una volta cresciuti.

Aggiornamento 20150115: Sfortunatamente Cloudability ha scelto il percorso di molti fornitori SaaS freemium e alla fine ha interrotto del tutto il livello gratuito: dal 1 ° febbraio, non offriremo più l'edizione Cloudability Free che stai utilizzando oggi .

Aggiornamento 20120427

Il precedente avvertimento (conservato come riferimento di seguito) di richiedere le credenziali AWS principali non si applica più - AWS ha recentemente introdotto nuove funzionalità IAM: gestione delle password e accesso alle pagine dei rapporti sull'attività e sull'utilizzo dell'account :

Questa nuova funzionalità consente di creare utenti IAM separati e distinti per scopi aziendali e tecnici. Puoi concedere ai tuoi utenti aziendali l'accesso alle pagine Attività dell'account e / o Rapporti di utilizzo del sito Web AWS per consentire loro di accedere ai dati di fatturazione e utilizzo senza concedere loro l'accesso ad altre risorse AWS come istanze EC2 o file in S3

La cloudability ha ora integrato anche questo, quindi non è più necessario consegnarli più le credenziali AWS principali o spendere lo sforzo extra per stabilire la fatturazione consolidata solo per ottenere informazioni sulla spesa cloud, vedere Come configurare Amazon IAM (Identity Account Management ) per i dettagli.

Ex avvertimento

C'è un avvertimento che uno dovrebbe essere consapevole in anticipo però:

Per poter accedere ai tuoi dati dovrai consegnare le tue credenziali AWS principali, perché altrimenti non potrebbero raschiare il tuo account, ovviamente. Per AWS, in particolare, è ancora possibile evitarlo facilitando la fatturazione consolidata , in cui si consolidano i pagamenti per più account Amazon AWS [...] designando un singolo account a pagamento , che a sua volta non ha accesso alle risorse e ai dati di elaborazione.


Mi sono appena registrato su Cloudability ma nella loro posta non sono riuscito a trovare quanto abbiamo speso ieri (o nelle ultime 24 ore). Stanno solo dando una stima mensile e quanto viene speso finora.
Sabya,

2
@sabya - hai ragione ovviamente, ho realizzato solo il rapporto giornaliero e ho perso questo requisito aggiuntivo, scusa (ho aggiornato la risposta per riflettere questo)! Ovviamente sarà banale per te fare la matematica da solo dopo il 2 ° giorno, sebbene averlo disponibile direttamente nella posta sarebbe un ovvio miglioramento e ovviamente molto più conveniente.
Steffen Opel,

12

Usando gli strumenti di awscli , puoi ottenere il totale dal mese ad oggi:

$ 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

I totali di due giorni diversi possono essere sottratti per ottenere il delta giornaliero. In alternativa, è possibile ottenere una stima in una sola volta aumentando la finestra temporale ( end-time- start-time) a 24 ore e sottraendo il punto dati più recente dall'ultimo.

Gli appunti:

  • presume che tu abbia abilitato il monitoraggio delle spese stimate
  • presume che tu abbia GNU date(per altri dates, ad es. su OSX, date -v-12Hpotrebbe funzionare)
  • la tua valuta può variare
  • Amazon aggiorna la metrica CloudWatch ogni ~ 4h, quindi l'interrogazione per una finestra temporale inferiore a 4h potrebbe non restituire alcun punto dati. Ho usato una finestra di 12 ore per essere più sicuro.
  • Volevo includere un link al post del blog su cui si basava la mia risposta, ma a quanto pare ho bisogno di 10 punti reputazione per pubblicare più di 2 link. :)

1
È importante notare che l'unica regione che funziona per lo spazio dei nomi "AWS / Fatturazione" è us-east-1. Mi sono strappato gran parte dei capelli chiedendomi perché il mio account con accesso alla fatturazione ottenesse risultati vuoti tramite la CLI.
Corey Cole,

Solo una nota, che awscli utilizza botocore e questi attributi sembrano essere accessibili tramite boto3.readthedocs.io/en/latest/reference/services/…
monkut

Ormai esiste un modo per farlo funzionare per altre regioni?
nh2,

4

Se hai davvero bisogno di un rapporto sui costi giornalieri, dovrai utilizzare lo strumento " Rapporto sull'utilizzo " nel tuo account AWS. Puoi richiedere un rapporto per ogni servizio che usi, in qualsiasi periodo di tempo desideri, in granularità da ora a mese. Quindi scarica un CSV.

Dovrai fare un po 'di post-elaborazione su quel CSV (poiché non è in costo, ma in uso ecc.), Ma ti fornirà i dati di cui hai bisogno per avere un costo giornaliero.


+1 Sì, ho capito. Stavo solo cercando un metodo più semplice.
Sabya,


2

Forse questo modulo Python su Github può aiutarti a iniziare: pyec2costs (per istanze riservate o ondemand).


2

Esiste un nuovo strumento open source di Netflix chiamato Ice: https://github.com/Netflix/ice che consente di visualizzare i dettagli di fatturazione recuperati tramite i report AWS generati nei bucket S3.



1

Ecco un semplice script che dimostra come analizzare e analizzare il file CSV di fatturazione AWS dettagliato:

Dovrebbe essere abbastanza facile da poter costruire la tua analisi!


1

Utilizzo del comando CLI AWS di CostExplorer È possibile recuperare le metriche di costo e utilizzo per l'account

Ad esempio: se è necessario recuperare i costi dall'inizio del mese fino ai giorni nostri, è possibile utilizzare il comando seguente.

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

Uscita: 615.6129260967

Se è necessario ottenere il costo su base GIORNALIERA, utilizzare GRANULARITÀ QUOTIDIANAMENTE come mostrato di seguito:

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

0

Ho visto le aziende costruire i propri strumenti interni per questo - fondamentalmente scartano la pagina di fatturazione di AWS e sulla propria dashboard, visualizzano il costo corrente e, in un esempio, lo dividono per i giorni del mese che sono trascorsi e moltiplicalo per ottenere il costo totale stimato del mese.

AWS non offre ancora un'API di fatturazione (sono sicuro che lo faranno in futuro), ma ci sono un paio di servizi esterni che possono aiutarti. Uno è CloudVertical (divulgazione: lavoro qui), dove è possibile ottenere il costo giornaliero, mensile e orario, suddiviso per servizio e per più account.

Il vero Santo Graal per un servizio come AWS non è solo quello di tenere traccia della spesa giornaliera, ma di mostrare approfondimenti sull'efficienza (costo + utilizzo = efficienza) e anche di evidenziare opportunità di risparmio (ad es. Tempi di utilizzo di istanze riservate o spot)


Ed Byme è corretto. Esistono numerosi fornitori. La cloudabilità è una come CloudVertical. Tuttavia sono tutte soluzioni molto pesanti e costose con molte funzioni che probabilmente non userete mai. Invece, considera BillGist.com (divulgazione: io lavoro qui) che è super economico e le e-mail che riporta direttamente nella tua casella di posta.


0

Ora puoi farlo con l'API Cost Explorer. Puoi accedere molto facilmente tramite awscli / boto3, ad esempio, ma il punto è che è molto più facile di prima.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.