AWSでの1日の支出を監視するにはどうすればよいですか?


26

インフラストラクチャはAWS上にあります。前日にどれだけ費やしたかを毎日報告したい。それを行う最良の方法は何ですか?

回答:


20

更新

AWSは、Amazon CloudWatchを介して請求アラート使用して推定請求額を監視する機能が一般に利用可能になったことを発表しました(2011年の終わりからAWSプレミアムアカウントで既に利用可能になっているようです。DanielLopezのAmazon AWSを設定する方法はありますか?請求限度額?):

使用する各AWSサービスの月額料金の合計を定期的に見積もります。アカウントのモニタリングを有効にすると、推定値をCloudWatchメトリックスとして保存し始め、通常の14日間は使用可能なままになります。[...]

入門ブログ投稿で概説されているように、請求アラートを使用して、AWS請求が予想よりも高くなる時期を知らせることができます。この機能の詳細については、Amazon CloudWatch使用した推定請求額の監視を参照してください。

これはすでに多くの基本的なニーズに非常に役立ちますが、CloudWatch APIを使用して保存されたメトリックを自分で取得することで(GetMetricStatisticsを参照)、実際にこのデータに基づいて任意のワークフローとビジネスロジックを駆動でき、もちろん日次レポートを生成できます同様に前日に費やした金額についても。

後者については、このオファリングの範囲も同様に強調されています。

これらは予測であり、予測ではないことに注意することが重要です。この見積もりは、現在の請求サイクル内での現在までのAWS使用量の概算であり、リソースを消費し続けると増加します。[...] AWSの使用パターンの傾向や潜在的な変化は考慮されません。[強調鉱山]

つまり、レポートされたメトリックの粒度はまだ分析されていないため(4〜8時間ごとにデータポイントが表示されますが、実際に予想されるように毎回値が更新されるとは限りません)。統計後処理。


初期回答

残念なことに、特にアカウントを介して手動で目的のデータを検査できることを考えると、これは考えているほど簡単ではありません。予想される2つの監視オプションがあります。

  • 電子メール/ RSS / etcを介した通知。
  • データへのAPIアクセス

AWSも、私が知っている他のIaaS / PaaS / SaaSベンダーも、現在、会計データへのAPIアクセスを提供していない(おそらく、潜在的な財務/法的影響のため)最近では)せいぜい面倒です。最初からデータを取得するには、Webスクレイピングに頼る必要があります。

幸いなことに、Cloudability [無料利用枠の廃止後に削除されたリンク]からの新しいオファリングは、専門家やベンダーにとらわれない方法でこれを行うために最近ステージに入りました。ただし、1月の支出に関する日次(または頻度の低い)レポートのみを受け取ります。つまり、まだ1日の支出に分類されていません。毎日の増加を追加することはもちろん些細なことなので、このような情報が今後さらに利用可能になることを期待し、期待しています。

価格へのアプローチ[無料利用枠の廃止後に削除されたリンク]も同様に更新され(明らかではありますが)、単純に独自のクラウド支出に結び付けられているため、それぞれの節約の可能性に気付いたらすぐに費用を支払う必要があります費用が$ 2.5k / mo未満の場合はすべて)。
20121016の更新:残念ながら、Cloudabilityは価格モデルをより一般的なものに変更しましたが、これには無料枠が含まれており(一般的にはリーズナブルな価格です)、高度な機能へのアクセスが削除されています。予算が小さい場合は、他の場所でまだ乗数を増やしたり、成長してからアップグレードしたりできます。

更新20150115:残念ながら、Cloudabilityは多くのフリーミアムSaaSベンダーの道を選択し、最終的に無料利用枠を完全に廃止しました。2月1日から、現在使用しているCloudability Freeエディションは提供されなくなります

更新20120427

メインのAWS認証情報を要求するという以前の注意事項(以下参照のために保持)はもう適用されません-AWSが最近導入した新しいIAM機能:アカウントアクティビティおよび使用状況レポートページへのアクセス

この新しい機能を使用すると、ビジネスおよび技術的な目的で、個別のIAMユーザーを作成できます。AWSウェブサイトのアカウントアクティビティおよび/または使用状況レポートページへのアクセスをビジネスユーザーに許可して、S3のEC2インスタンスやファイルなどの他のAWSリソースへのアクセスを許可せずに、請求および使用状況データにアクセスできるようにすることができます

Cloudabilityはこれも統合しているので、メインのAWSクレデンシャルを渡す必要がなく、クラウドの支出に関する洞察を得るために統合請求書を作成するために余分な労力を費やす必要がありません。AmazonIAMの設定方法(IDアカウント管理)詳細。

元の警告

ただし、前もって注意する必要がある注意事項が1つあります。

データにアクセスするには、メインのAWS認証情報を渡す必要があります。そうしないと、明らかにアカウントをスクレイプできないためです。AWSのために特にあなたはまだ容易にすることにより、これを避けることができ、連結課金あなたは、複数のアマゾンAWSの支払いを統合は、単一の支払いを口座指定して[...]アカウント順番にあなたのコンピューティングリソースやデータにアクセスできません。


Cloudabilityにサインアップしたばかりですが、彼らのメールでは、昨日(または過去24時間)にどれだけ費やしたかわかりませんでした。彼らは、毎月の見積もりと、これまでに費やした金額を提供しています。
サビア

2
@sabya-あなたはもちろん正しいです、私は毎日の報告書を実現し、この追加要件を逃しました、申し訳ありません(これを反映するために答えを更新しました)!もちろん、2日目以降に自分で計算を行うのは簡単です。ただし、メールですぐに利用できるようにすることは明らかな改善であり、もちろんはるかに便利です。
ステフェンオペル

12

awscliツールを使用して、今月の合計を取得できます。

$ 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

2つの異なる日の合計を差し引いて、毎日のデルタを取得できます。または、時間枠(end-time- start-time)を24hに増やし、最新のデータポイントから最も古いデータポイントを差し引くことにより、見積もりを一度に取得できます。

ノート:

  • 推定料金の監視を有効にしていることを前提としています
  • GNUを持っていることを前提としていますdate(他dateのOSのdate -v-12H場合、たとえばOSXでは動作する可能性があります)
  • 通貨は異なる場合があります
  • AmazonはCloudWatchメトリックスを約4時間ごとに更新するため、4時間よりも短い時間ウィンドウのクエリではデータポイントが返されない場合があります。安全性を高めるために12時間のウィンドウを使用しました。
  • 回答の元になったブログ投稿へのリンクを含めたかったのですが、2つ以上のリンクを投稿するには10の評価ポイントが必要なようです。:)

1
「AWS / Billing」名前空間で機能する唯一のリージョンはus-east-1であることに注意することが重要です。課金にアクセスできるアカウントがCLIを介して空の結果を取得している理由を疑問に思いながら、髪の毛の多くを引き裂きました。
コーリーコール

awscliはbotocoreを使用し、これらの属性はboto3.readthedocs.io/en/latest/reference/services/…を介してアクセスできるように見えることに注意してください
monkut

他の地域でこの機能を使用する方法はありますか?
nh2

4

日々のコストレポートが本当に必要な場合は、AW​​Sアカウントで「使用状況レポート」ツールを使用する必要があります。使用する各サービスのレポートを、希望する期間で、時間単位から月単位で細かくリクエストできます。次に、CSVをダウンロードします。

そのCSVには後処理を行う必要があります(コストではなく、使用量などのため)が、日々のコストが必要なデータを提供します。


+1はい、わかりました。もっと簡単な方法を探していました。
サビア


2

たぶん、GithubのこのPythonモジュールは、始めるのに役立ちます: pyec2costs(予約済みまたはオンデマンドインスタンス用)。


2

Netflixによってオープンソース化されたIceというかなり新しいツールがあります:https : //github.com/Netflix/ice。S3バケットに生成されたAWSレポートで取得した請求詳細を視覚化できます。


1

Xervmonをご覧ください。それらは、履歴に関する分析に加えて、日々の支出と使用状況を提供します。彼らは、今後3か月以内にAmazon AWSとの詳細な統合を予定しているサービスプロバイダーです。

私の現在のアカウントのスクリーンショットの一部は次のとおりです。 http://cloudmaya.net/~develop/demo/Slide1.jpg http://cloudmaya.net/~develop/demo/Slide2.jpg

多くの専門家が構築し、それは非常にきちんとしています。


1

詳細なAWS請求CSVファイルを解析および分析する方法を示す簡単なスクリプトを次に示します。

あなた自身の分析を構築できるように、十分に簡単でなければなりません!


1

CostExplorer AWS CLIコマンドの使用アカウントのコストと使用量のメトリックを取得することが可能です

例:月の初めから現在までのコストを取得する必要がある場合は、以下のコマンドを使用できます。

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

出力:615.6129260967

毎日のコストを取得する必要がある場合は、以下に示すように、GRANULARITYをDAILYとして使用します。

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

企業はこのために独自の社内ツールを構築しているのを見てきました-基本的に、AWS請求ページを破棄し、独自のダッシュボードで現在のコストを表示し、1つの例では、経過した月の日数で割ります、およびその倍数で、推定総月額コストを取得します。

AWSはまだ課金APIを提供していません(将来的には提供されると確信しています)が、役立つ外部サービスがいくつかあります。1つはCloudVertical(開示:私はここで働いています)で、毎日、毎月、および毎時のコストをサービスごとに、また複数のアカウントごとに取得できます。

ただし、AWSのようなサービスの本当の聖杯は、1日の支出を追跡するだけでなく、効率に関する洞察を示し(コスト+使用量=効率)、節約の機会(つまり、予約またはスポットインスタンスを使用する時間)を強調することでもあります


エド・バイムは正しい。多くのプロバイダーがあります。CloudVerticalと同様に、クラウドアビリティも1つです。ただし、これらはすべて非常に重くて高価なソリューションであり、多くの機能はおそらく決して使用しません。その代わりに、BillGist.com(開示:私はここで働いています)を検討してください。


0

これは、コストエクスプローラーAPIを使用して行うことができます。たとえば、awscli / boto3を使用して非常に簡単にアクセスできますが、ポイントは以前よりはるかに簡単になったことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.