天天看點

資料中台賦能雲成本管理(2): 借助SQL完成分賬

雲時代對賬單分析的強烈需求

資料中台賦能雲成本管理(2): 借助SQL完成分賬

對于傳統的IT運維,通常上線機器,首先需要預估需求,然後申請預算,再發起采購單,等待采購完成,到最終上線,整個流程已經橫跨幾個月,甚至到1年。

雲時代的到來,雲廠商巨大的資源池,保證任何客戶任意時刻都有足夠的資源使用。雲資源具備随時可用,規模彈性,規格豐富的特征。客戶可以一鍵建立出需要的機器和服務。把傳統IT橫跨幾個月的流程縮短到了秒級别。俗話說兵馬未動,糧草先行,雲資源正是業務的糧草,雲的彈性保障了業務的彈性。基于雲,出現了一個個瘋狂擴張的獨角獸。雲的出現重構了整個IT的基礎設施,而作為傳統IT一環的财務預算流程,也理所當然的被重構。

雲成本管控的痛點

  1. 在一個企業内部,多個部門可能共用一個雲賬号,每個部門的費用和預算混在一起,如何通過紛繁複雜的資料中剝離清楚是一個很大的挑戰。
  2. 傳統的财務資料,往往是财務部門負責。而雲計算的賬單資料,則是由運維部門負責,技術同學不僅需要做好技術的工作,還要研究成本資料,是一個很大的挑戰。
  3. 雲計算按量付費,每個執行個體每個小時就産生一條賬單資料,如何從大量資料中,按照不同次元進行分析是一個很大的挑戰。
  4. 對于開發者而言,比較強烈的需求是,如何做到把控整體費用,給各部分做分賬處理,管理未來的預算,優化雲成本。
資料中台賦能雲成本管理(2): 借助SQL完成分賬

對于傳統的資料分析流程,擷取資料往往占據很大的時間。因為财務資料往往比較嚴格和敏感,下載下傳好資料後,還需要投入大量精力進行核對,即便是差一分錢,都要從頭再來一遍工作。是以大部分的時間往往浪費在了這種低效率的工作上。賬單次元、資料量一般比較大,用excel分析時,打開一個大檔案都需要很長時間,更别說分析資料了。在分析時,需要針對不同次元(部門次元,執行個體等次元)進行分析,分析難度不是excel能夠解決的。

基于資料中台的賬單分析

資料中台賦能雲成本管理(2): 借助SQL完成分賬

作為技術的同學,在解決成本問題時,首先應該想到用技術的方式解決問題。原來我們把大量的時間浪費再下載下傳賬單資料上,那麼我們可以把這一資料擷取的流程固定下來,形成穩定的工作流。分析賬單的流程,固化成報表。賬單擷取+分析報表,這一套流程固化下來,節省了開發者99%的時間,每天隻需要打開報表檢視賬單結果就可以了。

日志服務(SLS)推出了"成本管家"功能,一鍵開通後,自動從賬單中心導入賬單到日志庫。日志服務是一個資料中台,提供時間序列資料的采集,存儲,分析功能。賬單正好是一種時間序列資料,借助資料中台的采集能力,無縫的采集賬單資料,節省了财務分析人員的99%的髒活累活。使使用者能夠從低效的賬單擷取和整理工作中解放出來,精力專注于分析賬單。

成本管家所具備的功能:

  • 實時采集,賬單産生一小時内傳輸到APP。
  • 定制報表,提供常見賬單分析場景,每日自動發送報告。
  • 互動式分析,使用SQL分析數月賬單,秒級可見結果。
  • 分析結果可以圖形化展示,更加直覺。
  • 機器學習算法,智能預測未來費用趨勢,挖掘異常賬單。
  • 自定義告警,實時發送異常賬單到手機。
  • 自定義分析可儲存到自定義報表。
  • 賬單分析涉及的資料存儲和分析功能,均免費。

成本管家采用如下方式進行開通:

日志服務控制台

一鍵開通。目前這種開通方式産品次元的賬單資料的,更加詳細的資料請使用第二種方式開通。内置三種報表。

資料詳情:

在賬單資料中分為兩類資料:

  1. 左側為賬單資料,辨別為source:bill,每個雲産品每個賬單周期産生一條記錄。
  2. 右側為執行個體賬單資料,每個執行個體一條資料,包含執行個體的使用量,屬性(TAG,NickName,名稱等),費用。辨別為source:instance_bill
資料中台賦能雲成本管理(2): 借助SQL完成分賬

内置報表

  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

即可拿到結果。更多搜尋文法請參考

文法文檔

資料中台賦能雲成本管理(2): 借助SQL完成分賬

2. 簡單聚合,求的總的賬單費用

在搜尋框中輸入

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

表示對ECS的執行個體賬單求和,求的總的賬單費用。計算結果點選"添加到儀表盤"即可建立出自己的儀表盤。

資料中台賦能雲成本管理(2): 借助SQL完成分賬

3. 分組聚合, 求的各個執行個體的賬單總額

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

在本次樣例中,是計算的執行個體次元。如果開發者對其他次元感興趣,例如Region、昵稱等次元,那麼group by換成其他次元亦可。

資料中台賦能雲成本管理(2): 借助SQL完成分賬

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 ))           
資料中台賦能雲成本管理(2): 借助SQL完成分賬
  • 按照産品,同比上月分析:
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           
資料中台賦能雲成本管理(2): 借助SQL完成分賬

小結

本文介紹了如何建立成本管家,以及通過成本管家進行分賬管理,使用過程中若有任何疑問,請掃描二維碼加群咨詢。

資料中台賦能雲成本管理(2): 借助SQL完成分賬

繼續閱讀