如何监控AWS的每日支出?


26

我们的基础架构位于AWS上。我想获得有关前一天花费多少的每日报告。最好的方法是什么?

Answers:


20

更新资料

AWS刚刚宣布了该功能的总体可用性,该功能可通过Amazon CloudWatch 使用账单警报监视估计的费用(显然,自2011年底以来,该功能已适用于AWS高级账户,请参阅Daniel Lopez对“ 是否可以设置Amazon AWS的方法 ”的回答)。帐单限额?):

我们会定期估算您使用的每个AWS服务的每月总费用。当您启用对帐户的监控后,我们便开始将估算值存储为CloudWatch指标,在通常的14天时间段内它们都将保持可用状态。[...]

如介绍性博客文章中所述,您可以通过使用计费警报开始,以通知您AWS账单何时会高于预期,有关此功能的更多详细信息,请参阅使用Amazon CloudWatch监控估计的费用

对于许多基本需求,这已经非常有用,但是,使用CloudWatch API自己检索存储的指标(请参阅GetMetricStatistics)实际上允许您基于此数据来驱动任意工作流和业务逻辑,当然,您可以生成每日报告前一天的花费也是如此。

关于后者,还强调了此产品的范围:

重要的是要注意,这些只是估计,而不是预测。该估算值近似于当前在当前计费周期内迄今为止AWS使用的成本,并且随着您继续消耗资源增加。[...]它没有考虑您的AWS使用模式的趋势或潜在变化。[强调我的]

也就是说,尚未分析报告指标的粒度(我会每隔4到8小时看到数据点,但不一定每次都更新值,正如人们实际期望的那样),因此得出足够精确的每日报告可能需要一些统计后处理。


初步答案

不幸的是,这比人们想象的要简单,特别是考虑到可以通过您的帐户手动检查所需的数据。一个监控选项有两个:

  • 通过电子邮件/ RSS /等的通知
  • 通过API访问数据

目前我不了解的AWS或任何其他IaaS / PaaS / SaaS供应商都没有提供API访问其会计数据的权限(可能是由于潜在的财务/法律影响),从而进行了任何形式的第三方集成(这很容易实现)如今最多)很繁琐,因为您首先需要借助网络抓取来检索数据。

幸运的是,Cloudability的一项新产品[免费等级终止后已删除链接]现已进入阶段,以专业人士和供应商不可知的方式为您做到这一点,我们已经在AWS上成功地使用了该产品-您目前将不过,会收到您每月支出每日(或更不频繁)报告,即尚未细分为您的每日支出。添加每日增量当然是微不足道的,因此我希望并希望他们随着时间的推移会提供更多类似的信息。

他们的定价方法(免费级终止后链接被删除)也正在刷新(尽管很明显),并且仅与您自己的云支出相关联,因此,一旦意识到各自的储蓄潜力,它们便会收回成本(他们不收费)如果您每月花费少于$ 2.5k,则可以选择任何费用)。
20121016更新:不幸的是,Cloudability已将其定价模型更改为更常见的定价模型,该模型仍包括免费套餐(通常定价合理),但是删除了其中的高级功能,我认为对于用户而言,这是一种令人耳目一新的公平,明智的方法预算很少,他们可能仍然是其他地方的乘数,或者一旦成长便会升级。

更新20150115:不幸的是,Cloudability选择了许多免费增值SaaS供应商的路径,并最终完全停止了免费套餐从2月1日起,我们将不再提供您今天使用的Cloudability Free版本

更新20120427

以前要求您提供主要AWS凭证的警告(以下保留以供参考)不再适用-AWS最近引入了新的IAM功能:密码管理以及对帐户活动和使用情况报告页面的访问

这项新功能使您可以为业务和技术目的创建独立的IAM用户。您可以授予业务用户访问AWS网站的账户活动和/或使用情况报告页面的权限,以允许他们访问账单和使用情况数据,而无需授予他们访问其他AWS资源(例如EC2实例或S3中的文件)的权限。

Cloudability现在也已对此进行了集成,因此您无需再将其交给您的主要AWS凭证,也无需花费额外的精力来建立Consolidated Billing即可了解您的云支出,请参阅如何设置Amazon IAM(身份帐户管理) )以获取详细信息。

前警告

有一个警告,但应该注意:

为了访问您的数据,您需要将其交给您的主要AWS凭证,因为显然,否则它们将无法抓取您的账户。特别是对于AWS,您仍然可以通过简化Consolidated Billing来避免这种情况,在该方法中,您可以通过指定一个付款帐户来合并多个Amazon AWS帐户的付款,而该帐户又无法访问您的计算资源和数据。


我刚刚注册了Cloudability,但在他们的邮件中,我找不到我们昨天(或过去24小时)花了多少钱。他们只是给出每月的预算以及到目前为止花费了多少。
萨比亚2012年

2
@sabya-当然,您是正确的,我只了解每日报告,却错过了这一额外要求,对不起(我已经更新了答案以反映这一点)!显然,第二天之后您自己动手做数学将是微不足道的,尽管可以在邮件中直接使用它将是一个明显的改进,并且当然更加方便。
斯特芬·欧宝

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

可以减去两个不同日期的总计,以获得每日增量。或者,可以通过将时间窗(end-time- start-time)增加到24h并从最新值中减去最早的数据点来一次性获得估算值。

笔记:

  • 假设您已启用对估算费用的监控
  • 假设您具有GNU datedate例如对于OSX上的其他版本,date -v-12H可能会工作)
  • 您的货币可能会有所不同
  • Amazon每隔约4小时更新一次CloudWatch指标,因此查询小于4小时的时间窗口可能不会返回任何数据点。我使用了12小时的窗口,这是特别安全的。
  • 我想包含指向我的答案所基于的博客文章的链接,但是显然我需要10个声誉点才能发布两个以上的链接。:)

1
重要的是要注意,唯一适用于“ AWS / Billing”名称空间的区域是us-east-1。我想弄清楚为什么我的有权访问帐单的帐户为什么通过CLI却得到了空结果,这使我大发雷霆。
科里·科尔

请注意,awscli使用botocore,并且可以通过boto3.readthedocs.io/en/latest/reference/services/…
monkut

那么,现在有没有办法使这项工作适用于其他地区?
nh2

4

如果您确实需要每日费用报告,则需要在您的AWS账户中使用“ 使用情况报告 ”工具。您可以在任意时间段内,按小时到月的粒度,为您使用的每种服务请求一份报告。然后下载CSV。

您需要对该CSV进行一些后期处理(因为它不是成本,而是使用量等),但是它将为您提供日常成本所需要的数据。


+1是,我了解。我只是在寻找一种更简单的方法。
萨比亚2012年





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账单页面,显示当前成本,并在一个示例中,将其除以当月已过的天数,然后乘以该值即可得出估算的每月总费用。

AWS尚不提供计费API(我相信将来会提供),但是有两个外部服务可以提供帮助。一种是CloudVertical(披露:我在这里工作),在这里您可以按服务,多个帐户细分的每日,每月和每小时成本。

AWS之类的服务的真正圣杯虽然不仅要跟踪日常支出,而且要显示出对效率的洞察力(成本+使用率=效率),并强调节省的机会(即:使用预留实例或现货实例的时间)


Ed Byme是正确的。有许多提供商。可云性与CloudVertical一样。但是,它们都是非常沉重且昂贵的解决方案,具有许多您可能永远不会使用的功能。相反,请考虑BillGist.com(披露:我在这里工作),这是非常便宜的,您可以在收件箱中直接通过电子邮件发送报告。


0

现在,您可以使用Cost Explorer API进行此操作。例如,您可以通过awscli / boto3轻松访问,但要点是它比以前容易得多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.