如何最准确地将Google Cloud Platform项目成本与App Engine活动相关联?

时间:2017-08-22 23:54:32

标签: google-app-engine google-cloud-platform google-cloud-storage google-cloud-stackdriver

我支持基于Google Cloud Platform构建的数据管理解决方案。随着我们的产品的成熟,越来越多的团队和个人正在采用它,这意味着更多的人正在存储和搜索数据并增加成本。我们需要更好地了解每个用户/工作流程对我们造成的损失,以便我们最终可以开始使用我们的服务收费。

我已经拥有Google云平台项目的结算数据,我们的解决方案在运行时会导出到BigQuery。我发现有关该项目的70-80%的Google Cloud Platform账单都归功于App Engine(作为产品),因此我目前专注于分割App Engine的成本。这是一天(来自BigQuery)项目的App Engine成本的简要视图:

Row product     resource_type                   start_time              end_time                cost        usage_amount        usage_unit  
1   App Engine  Simple Searches                 2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.1473      3946.0              requests     
2   App Engine  Flex Instance RAM               2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.6816      3.710851743744E14   byte-seconds     
3   App Engine  Search Document Storage         2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.505028    8.0921704558464E15  byte-seconds     
4   App Engine  Code and Static File Storage    2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         5.96811043008E13    byte-seconds     
5   App Engine  Datastore Entity Writes         2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.085804    67669.0             requests     
6   App Engine  Other Search Ops                2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         1732.0              requests     
7   App Engine  Out Bandwidth                   2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.273014    3.516638423E9       bytes    
8   App Engine  Datastore Read Ops              2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 1.494541    2540902.0           requests     
9   App Engine  Search Document Indexing        2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.05012     3.7645832E7         bytes    
10  App Engine  Datastore Storage               2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 1.72891     2.7716055728688E16  byte-seconds     
11  App Engine  Flex Instance Core Hours        2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 5.0496      345600.0            seconds  
12  App Engine  Task Queue Storage              2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         5.14512E8           byte-seconds     
13  App Engine  Datastore Small Ops             2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         16166.0             requests     
14  App Engine  Backend Instances               2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 206.080588  1.4870202339153E7   seconds  
15  App Engine  Frontend Instances              2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 1.35596     198429.126958       seconds  

问题1:顺便说一句,对于熟悉Google Cloud Platform结算导出的任何人来说,start_time 2017-08-20 07:00:00 UTCend_time {{1}的条目反映2017-08-20发生的费用,而不是2017-08-19,对吧?

现在,我了解将这些App Engine成本与App Engine活动相关联并不是一个精确的映射 - Google Cloud Platform不会针对每个操作进行计费,并且我会猜测共享资源成本(请如果我错了,请纠正我!) - 但我还是想得到合理的估计。我的第一次尝试涉及检查Google's logged estimated cost per request。因此,我为App Engine请求日志创建了一个接收器并等待数字滚入。但是,使用此方法在给定日期内所有请求的总估计成本非常低:

2017-08-20 08:00:00 UTC

产量

SELECT SUM(protoPayload.cost) AS cost_total
  FROM [my-data-management-solution:request_log.appengine_googleapis_com_request_log_20170820];

这几乎占App Engine总成本的1.5%!

问题2: Row cost_total 1 3.2711573326337837 (s)(来自Google Cloud Platform结算导出)请求日志费用估算值是对应还是有贡献?

我的App Engine成本中约有95%归功于后端实例resource_type。我对它们的内容进行了一些粗略的研究(包括this video声称Google正在远离整个后端/前端实例的区别)。我假设(或者可能已经读过)Google依赖于任何秘密算法来启动,关闭和管理这些实例。就这样......

问题3(重大问题):如何才能了解单个用户/工作流操作(仅限于通过App Engine确定)可以对App Engine总成本产生多少影响,或者最低限度Google云端项目的App Engine后端实例成本?是否有可能没有像用户活动回归成本和创建ML模型那样的东西?是否有机会深入了解这个黑盒子(从缩放和定价角度来看)是如何工作的,或者认为App Engine的成本与用户活动有些直接相关?

其他信息

  1. 我们的数据管理解决方案使用了自己的身份概念,我并不期待Google能够巧妙地弄明白这一点。我现在可以通过解析Stackdriver日志将resource_type项链接到用户,我将计算用户工作流关联或从其他工具获取它们。

  2. 为了以防万一,开箱即用的东西有什么可以做的吗?一个StackOverflow评论提到Potamus,但是存储库不再可用,并且几乎没有关于它开始时做什么的任何信息。

  3. 如果App Engine成本分割不是什么大问题,那么云存储等其他产品如何?这将是我的下一个目标,尽管将云存储成本(实际的,可能可忽略的存储成本和更昂贵的I / O成本)与App Engine活动相关联的挑战在这一点上似乎更不合理。

1 个答案:

答案 0 :(得分:0)

完全理解您对资源使用的兴趣,希望这会有所帮助!

您可以通过GCP云控制台中的API资源管理器创建(和管理)标签,这应该可以明确资源使用情况。 标签实体可以与团队/成本中心,用户,环境等相关联,以便清楚地了解资源使用情况。链接资源提供了更多详细信息:GCP_Using Labels

您还可以使用export-to-BigQuery& amp;创建计费数据的可视化表示形式,以便进一步分析。 Data Studio。链接的媒体文章是一个很棒的概述。 Medium_Visualizing GCP Billing Data using BQ and Data Studio

干杯, 琥珀