Wie kann ich die täglichen Ausgaben für AWS überwachen?


26

Unsere Infrastruktur basiert auf AWS. Ich möchte täglich einen Bericht darüber erhalten, wie viel ich am Vortag ausgegeben habe. Wie geht das am besten?

Antworten:


20

Aktualisieren

AWS hat soeben angekündigt , die allgemeine Verfügbarkeit der Funktionen für Gebühren - Monitor über Billing Benachrichtigungen über Amazon Cloudwatch (es ist offensichtlich gewesen AWS Premium verfügbar macht bereits seit Ende 2011, Daniel Lopez‘Antwort sehen gibt es eine Möglichkeit Amazon AWS einstellen Abrechnungslimit? ):

Wir schätzen regelmäßig die monatliche Gesamtgebühr für jeden von Ihnen verwendeten AWS-Service. Wenn Sie die Überwachung Ihres Kontos aktivieren, speichern wir die Schätzungen als CloudWatch-Metriken. Diese bleiben dann für den üblichen Zeitraum von 14 Tagen verfügbar. [...]

Wie im einleitenden Blog-Beitrag erläutert, können Sie zunächst anhand der Abrechnungsbenachrichtigungen feststellen, wann Ihre AWS-Rechnung höher ist als erwartet. Weitere Informationen zu dieser Funktion finden Sie unter Überwachen Ihrer geschätzten Gebühren mit Amazon CloudWatch .

Dies ist bereits für viele grundlegende Anforderungen sehr nützlich. Wenn Sie jedoch die gespeicherten Metriken mithilfe der CloudWatch-APIs selbst abrufen (siehe GetMetricStatistics ), können Sie beliebige Workflows und Geschäftslogik auf der Grundlage dieser Daten steuern. Natürlich können Sie auch einen täglichen Bericht erstellen wie viel am Vortag ausgegeben wurde .

In Bezug auf Letzteres wird jedoch auch der Umfang dieses Angebots hervorgehoben:

Es ist wichtig zu beachten, dass dies Schätzungen und keine Vorhersagen sind . Die Schätzung entspricht in etwa den Kosten Ihrer bisherigen AWS-Nutzung innerhalb des aktuellen Abrechnungszyklus und wird sich erhöhen, wenn Sie weiterhin Ressourcen verbrauchen . [...] Es werden keine Trends oder potenziellen Änderungen in Ihrem AWS-Verwendungsmuster berücksichtigt. [Hervorhebung von mir]

Das heißt, die Granularität der gemeldeten Metriken muss noch analysiert werden (ich sehe Datenpunkte alle 4 bis 8 Stunden, aber nicht unbedingt jedes Mal aktualisierte Werte, wie man es eigentlich erwarten würde), so dass das Ableiten eines ausreichend präzisen täglichen Berichts einige erfordern könnte statistische Nachbearbeitung.


Erstantwort

Leider ist dies weniger einfach als man denkt, zumal die gewünschten Daten manuell über Ihr Konto eingesehen werden können. Es gibt zwei zu erwartende Überwachungsoptionen:

  • Benachrichtigungen per Email / RSS / etc.
  • API-Zugriff auf die Daten

Weder AWS noch ein anderer mir bekannter IaaS / PaaS / SaaS-Anbieter bieten API-Zugriff auf ihre Buchhaltungsdaten an (möglicherweise aufgrund der potenziellen finanziellen / rechtlichen Auswirkungen), sodass eine Integration von Drittanbietern möglich ist (was leicht möglich wäre) tun heutzutage) bestenfalls umständlich, sofern Sie erst auf Web-Scraping zurückgreifen müssen, um die Daten abzurufen.

Glücklicherweise ist kürzlich ein neues Angebot von Cloudability [Link nach Einstellung der kostenlosen Stufe entfernt] auf den Markt gekommen, das genau dies für Sie auf professionelle und herstellerunabhängige Weise erledigt. Wir verwenden es bereits mit großem Erfolg speziell für AWS - Sie werden es derzeit tun Sie erhalten jedoch nur einen täglichen (oder weniger häufigen) Bericht über Ihre monatlichen Ausgaben , dh noch nicht auf Ihre täglichen Ausgaben heruntergebrochen. Das Hinzufügen der täglichen Erhöhung wäre natürlich trivial, daher würde ich hoffen und erwarten, dass sie im Laufe der Zeit weitere Informationen wie diese zur Verfügung stellen.

Der Ansatz zur Preisgestaltung [Link nach Einstellung der kostenlosen Stufe entfernt] ist ebenfalls erfrischend (obwohl offensichtlich) und einfach an Ihre eigenen Cloud-Ausgaben gebunden. Er sollte sich amortisieren, sobald Sie das entsprechende Einsparpotenzial erkennen (sie erheben keine Gebühren) Alles, wenn Sie weniger als 2,5.000 USD / Monat ausgeben.
Update 20121016 : Leider hat Cloudability das Preismodell zu einem allgemeineren geändert, das weiterhin eine kostenlose Stufe enthält (und im Allgemeinen einen angemessenen Preis aufweist), aber den Zugriff auf erweiterte Funktionen darin verhindert, was ich als erfrischend fairen und intelligenten Ansatz für Benutzer betrachtete mit kleinen Budgets, die möglicherweise noch Multiplikatoren anderswo sind oder ein Upgrade durchführen, wenn sie erst einmal hinzukommen.

Update 20150115: Leider hat Cloudability den Weg vieler Freemium SaaS-Anbieter eingeschlagen und die kostenlose Version endgültig eingestellt: Ab dem 1. Februar werden wir die Cloudability Free-Edition, die Sie heute verwenden, nicht mehr anbieten .

Aktualisieren Sie 20120427

Die frühere Einschränkung, dass Sie Ihre Haupt-AWS-Anmeldeinformationen benötigen (siehe unten), gilt nicht mehr. AWS hat kürzlich neue IAM-Funktionen eingeführt: Kennwortverwaltung und Zugriff auf Seiten mit Kontoaktivitäts- und Nutzungsberichten :

Mit dieser neuen Funktion können Sie separate und unterschiedliche IAM-Benutzer für geschäftliche und technische Zwecke erstellen. Sie können Ihren Geschäftsbenutzern Zugriff auf die Seiten "Kontoaktivität" und / oder "Nutzungsberichte" der AWS-Website gewähren, um ihnen den Zugriff auf Abrechnungs- und Nutzungsdaten zu ermöglichen, ohne ihnen Zugriff auf andere AWS-Ressourcen wie EC2-Instanzen oder Dateien in S3 zu gewähren

Cloudability hat dies nun ebenfalls integriert. Sie müssen ihnen also nicht mehr Ihre wichtigsten AWS-Anmeldeinformationen aushändigen oder müssen die konsolidierte Abrechnung einrichten , um einen Einblick in Ihre Cloud-Ausgaben zu erhalten. Weitere Informationen hierzu finden Sie unter Einrichten von Amazon IAM (Identity Account Management) ) für Details.

Ehemalige Einschränkung

Es gibt eine Einschränkung, die man im Vorfeld beachten sollte:

Um auf Ihre Daten zugreifen zu können, müssen Sie ihnen Ihre wichtigsten AWS-Anmeldeinformationen aushändigen, da sie ansonsten Ihr Konto offensichtlich nicht entstellen können. Insbesondere für AWS können Sie dies dennoch vermeiden, indem Sie die konsolidierte Abrechnung ermöglichen , bei der Sie die Zahlung für mehrere Amazon AWS-Konten [...] konsolidieren , indem Sie ein einziges zahlendes Konto angeben , das wiederum keinen Zugriff auf Ihre Computerressourcen und -daten hat.


Ich habe mich gerade bei Cloudability angemeldet, konnte aber in der E-Mail nicht feststellen, wie viel wir gestern (oder in den letzten 24 Stunden) ausgegeben haben. Sie geben nur eine monatliche Schätzung und wie viel bis jetzt ausgegeben wird.
Sabya

2
@sabya - du hast natürlich recht, ich habe nur den täglichen Bericht erstellt und diese zusätzliche Anforderung verpasst, sorry (ich habe die Antwort aktualisiert, um dies widerzuspiegeln)! Natürlich ist es für Sie trivial, nach dem 2. Tag selbst zu rechnen, obwohl es eine offensichtliche Verbesserung und natürlich viel bequemer wäre, wenn Sie es direkt per E-Mail erhalten.
Steffen Opel

12

Mit den awscli- Tools können Sie Ihre monatliche Gesamtsumme abrufen :

$ 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

Summen von zwei verschiedenen Tagen können abgezogen werden, um das tägliche Delta zu erhalten. Oder Sie können eine Schätzung auf einmal erhalten, indem Sie das Zeitfenster ( end-time- start-time) auf 24 Stunden erhöhen und den frühesten Datenpunkt vom spätesten abziehen.

Anmerkungen:

  • setzt voraus, dass Sie die Überwachung Ihrer geschätzten Gebühren aktiviert haben
  • setzt voraus, dass Sie GNU haben date(für andere dates, z. B. unter OSX, date -v-12Hfunktioniert möglicherweise)
  • Ihre Währung kann variieren
  • Amazon aktualisiert die CloudWatch-Metrik alle ~ 4 Stunden. Wenn Sie also nach einem Zeitfenster suchen, das kürzer als 4 Stunden ist, werden möglicherweise keine Datenpunkte zurückgegeben. Ich habe ein 12-Stunden-Fenster verwendet, um besonders sicher zu sein.
  • Ich wollte einen Link zu dem Blog-Beitrag einfügen, auf dem meine Antwort basierte, aber anscheinend benötige ich 10 Reputationspunkte, um mehr als 2 Links zu posten. :)

1
Es ist wichtig zu beachten, dass die einzige Region, die für den Namespace 'AWS / Billing' funktioniert, us-east-1 ist. Ich riss mir die Haare aus und fragte mich, warum mein Konto mit Zugang zur Abrechnung über die CLI leere Ergebnisse lieferte.
Corey Cole

Nur ein Hinweis, dass die awscli Botocore verwendet und diese Attribute über boto3.readthedocs.io/en/latest/reference/services/…
monkut

Gibt es nun eine Möglichkeit, diese Funktion für andere Regionen zu nutzen?
nh2

4

Wenn Sie wirklich einen täglichen Kostenbericht benötigen, müssen Sie das Tool " Nutzungsbericht " in Ihrem AWS-Konto verwenden. Sie können einen Bericht für jeden Dienst anfordern, den Sie für einen beliebigen Zeitraum verwenden, und zwar in Granularität von Stunde zu Monat. Dann wird eine CSV heruntergeladen.

Sie müssen einige Nachbearbeitungen für diese CSV durchführen (da dies nicht kostenpflichtig ist, sondern in der Nutzung usw.), aber Sie erhalten die Daten, die Sie für die täglichen Kosten benötigen.


+1 Ja, ich verstehe. Ich suchte nur nach einer einfacheren Methode.
Sabya


2

Vielleicht hilft Ihnen dieses Python-Modul auf Github beim Einstieg: pyec2costs (für reservierte oder On-Demand-Instanzen).




1

Hier ist ein einfaches Skript, das zeigt, wie Sie Ihre detaillierte AWS-Abrechnungs-CSV-Datei analysieren und analysieren:

Sollte einfach genug sein, damit Sie Ihre eigene Analyse erstellen können!


1

Verwenden des CostExplorer AWS CLI-Befehls Sie können die Kosten- und Nutzungsmetriken für das Konto abrufen

Zum Beispiel: Wenn Sie die Kosten vom Monatsanfang bis zum heutigen Tag abrufen müssen, können Sie den folgenden Befehl verwenden.

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

Ausgabe: 615.6129260967

Wenn Sie die Kosten auf TÄGLICHER Basis erhalten möchten, verwenden Sie GRANULARITY als TÄGLICH, wie unten gezeigt:

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

Ich habe gesehen, wie Unternehmen ihre eigenen Tools dafür erstellt haben - im Grunde genommen verschrotten sie die AWS-Abrechnungsseite und ihr eigenes Dashboard, zeigen die aktuellen Kosten an und teilen sie in einem Beispiel durch die Tage des vergangenen Monats und multiplizieren Sie dies, um die geschätzten monatlichen Gesamtkosten zu erhalten.

AWS bietet noch keine Abrechnungs-API an (ich bin mir sicher, dass dies in Zukunft der Fall sein wird), aber es gibt einige externe Services, die helfen können. Eine davon ist CloudVertical (Offenlegung: Ich arbeite hier), bei der Sie Ihre täglichen, monatlichen und stündlichen Kosten, aufgeschlüsselt nach Service und für mehrere Konten, abrufen können.

Das Allerheiligste für einen Service wie AWS ist jedoch, nicht nur die täglichen Ausgaben nachzuverfolgen, sondern auch Einsichten in die Effizienz (Kosten + Nutzung = Effizienz) zu erhalten und Einsparungsmöglichkeiten aufzuzeigen (z. B. Zeiten für die Nutzung reservierter oder vor Ort verfügbarer Instanzen).


Ed Byme ist richtig. Es gibt eine Reihe von Anbietern. Cloudability ist eine CloudVertical. Es sind jedoch alles sehr schwere und teure Lösungen mit vielen Funktionen, die Sie wahrscheinlich nie verwenden werden. Betrachten Sie stattdessen BillGist.com (Offenlegung: Ich arbeite hier), das super billig ist und E-Mails, die Sie melden , direkt in Ihrem Posteingang.


0

Sie können dies jetzt mit der Cost Explorer-API tun. Sie können zum Beispiel sehr einfach über awscli / boto3 darauf zugreifen, aber der Punkt ist, dass es viel einfacher ist als zuvor.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.