数据中台赋能云成本管理(2): 借助SQL完成分账

云雷 2020-02-12

SQL Image 报表 source Group

云时代对账单分析的强烈需求

对于传统的IT运维,通常上线机器,首先需要预估需求,然后申请预算,再发起采购单,等待采购完成,到最终上线,整个流程已经横跨几个月,甚至到1年。

云时代的到来,云厂商巨大的资源池,保证任何客户任意时刻都有足够的资源使用。云资源具备随时可用,规模弹性,规格丰富的特征。客户可以一键创建出需要的机器和服务。把传统IT横跨几个月的流程缩短到了秒级别。俗话说兵马未动,粮草先行,云资源正是业务的粮草,云的弹性保障了业务的弹性。基于云,出现了一个个疯狂扩张的独角兽。云的出现重构了整个IT的基础设施,而作为传统IT一环的财务预算流程,也理所当然的被重构。

云成本管控的痛点

  1. 在一个企业内部,多个部门可能共用一个云账号,每个部门的费用和预算混在一起,如何通过纷繁复杂的数据中剥离清楚是一个很大的挑战。
  2. 传统的财务数据,往往是财务部门负责。而云计算的账单数据,则是由运维部门负责,技术同学不仅需要做好技术的工作,还要研究成本数据,是一个很大的挑战。
  3. 云计算按量付费,每个实例每个小时就产生一条账单数据,如何从大量数据中,按照不同维度进行分析是一个很大的挑战。
  4. 对于开发者而言,比较强烈的需求是,如何做到把控整体费用,给各部分做分账处理,管理未来的预算,优化云成本。

对于传统的数据分析流程,获取数据往往占据很大的时间。因为财务数据往往比较严格和敏感,下载好数据后,还需要投入大量精力进行核对,即便是差一分钱,都要从头再来一遍工作。所以大部分的时间往往浪费在了这种低效率的工作上。账单维度、数据量一般比较大,用excel分析时,打开一个大文件都需要很长时间,更别说分析数据了。在分析时,需要针对不同维度(部门维度,实例等维度)进行分析,分析难度不是excel能够解决的。

基于数据中台的账单分析

作为技术的同学,在解决成本问题时,首先应该想到用技术的方式解决问题。原来我们把大量的时间浪费再下载账单数据上,那么我们可以把这一数据获取的流程固定下来,形成稳定的工作流。分析账单的流程,固化成报表。账单获取+分析报表,这一套流程固化下来,节省了开发者99%的时间,每天只需要打开报表查看账单结果就可以了。

日志服务(SLS)推出了"成本管家"功能,一键开通后,自动从账单中心导入账单到日志库。日志服务是一个数据中台,提供时间序列数据的采集,存储,分析功能。账单正好是一种时间序列数据,借助数据中台的采集能力,无缝的采集账单数据,节省了财务分析人员的99%的脏活累活。使用户能够从低效的账单获取和整理工作中解放出来,精力专注于分析账单。

成本管家所具备的功能:

  • 实时采集,账单产生一小时内传输到APP。
  • 定制报表,提供常见账单分析场景,每日自动发送报告。
  • 交互式分析,使用SQL分析数月账单,秒级可见结果。
  • 分析结果可以图形化展示,更加直观。
  • 机器学习算法,智能预测未来费用趋势,挖掘异常账单。
  • 自定义告警,实时发送异常账单到手机。
  • 自定义分析可保存到自定义报表。
  • 账单分析涉及的数据存储和分析功能,均免费。

成本管家采用如下方式进行开通:

日志服务控制台一键开通。目前这种开通方式产品维度的账单数据的,更加详细的数据请使用第二种方式开通。内置三种报表。

数据详情:

在账单数据中分为两类数据:

  1. 左侧为账单数据,标识为source:bill,每个云产品每个账单周期产生一条记录。
  2. 右侧为实例账单数据,每个实例一条数据,包含实例的使用量,属性(TAG,NickName,名称等),费用。标识为source:instance_bill

image.png

内置报表

  1. 账单总览和预测:提供账号汇总的账单,以及在月和日级别的趋势,以及未来的消费趋势预测。
  2. 产品账单明细:提供各个云产品本月消费总和,已经环比消费对比。
  3. 账单优化建议:根据使用情况,提供包年包月的优化建议。
  4. ECS成本分摊:针对ECS账单,按照Tag,Region,NickName等维度进行分摊统计,不同的部门可能采用Tag进行区分,也可能采用NickName进行区分。
  5. SLS账单分析:针对SLS账单,分析存储,写入资源的使用量,以及费用最多的Project。
  6. OSS账单分析:针对OSS账单,分析不同的存储类型,各个计费项目的使用量。

自定义探索分析账单

内置的报表是分析模板,提供了分析案例。客户的需求是多种多样的,有的客户在Tag中记录部门信息做分账,有的客户通过NickName做分账,在Tag和NickName中还有不同的格式。这导致同一个模板无法满足所有客户的需求。因此自定义探索分析称为必须,本章将以几个样例为例,介绍如何使用SQL语法分析账单。

1. 搜索关心的账单

在所有的账单中,我们可能只关心某些账单,例如我们只需要拿到ECS的实例账单,那么,只需要按下图所示打开aliyun_bill,在搜索框中输入source:instance_bill and ProductCode:ECS即可拿到结果。更多搜索语法请参考语法文档

image.png

2. 简单聚合,求的总的账单费用

在搜索框中输入

source:instance_bill and ProductCode:ECS | select sum(PretaxAmount)

表示对ECS的实例账单求和,求的总的账单费用。计算结果点击"添加到仪表盘"即可创建出自己的仪表盘。

image.png

3. 分组聚合, 求的各个实例的账单总额

source:instance_bill and ProductCode:ECS | select InstanceID, sum(PretaxAmount)  as Amount group by InstanceId order by Amount desc

在本次样例中,是计算的实例维度。如果开发者对其他维度感兴趣,例如Region、昵称等维度,那么group by换成其他维度亦可。

image.png

4. 同比环比分析

在分析账单时,我们往往希望和上一个周期进行对比,通过对比才知道增加了多少。

  • 计算本月费用,同比上月的增长率:
source:bill  | select diff[1] as "本月费用", diff[2]  as "上月费用", diff[3]*100-100 as  "同比增加%"  from(select compare(amount,604800) as diff from( select sum(PretaxAmount) as amount  from log ))

image.png

  • 按照产品,同比上月分析:
source:bill  | select ProductCode, diff[1] as "本月费用", diff[2]  as "上月费用", diff[3]*100-100 as  "同比增加%"  from(select productcode, compare(amount,604800) as diff from( select ProductCode, sum(PretaxAmount) as amount  from log group by ProductCode ) group by productcode )

5. 利用Tag做分账管理

目前多种产品已经支持了Tag,我们可以通过Tag完成分账:Tag中是包含多个key/value的,通过解析不同的key,value,计算每一对key/value的费用额度。

source: instance_bill and ecs | select k,v , round(sum(PretaxAmount),3) "金额" from( select split_to_map(Tag,';',' ') as tags ,PretaxAmount from log  where tag <>'' ),unnest(tags) as t(k,v) group by k,v order by "金额" desc limit  1000

image.png

小结

本文介绍了如何创建成本管家,以及通过成本管家进行分账管理,使用过程中若有任何疑问,请扫描二维码加群咨询。

登录 后评论
下一篇
云栖号
7940人浏览
2020-03-04
相关推荐
数据中台从何而来
768人浏览
2020-03-02 21:42:34
1
0
0
2973