阿里云多賬號財(cái)務(wù)管理優(yōu)秀實(shí)踐
大型企業(yè)或集團(tuán)公司,由于組織架構(gòu)復(fù)雜,業(yè)務(wù)復(fù)雜等原因,通常擁有多個阿里云賬號來管理規(guī)模龐大的云上資源。多賬號的環(huán)境,又進(jìn)一步加大了分賬的難度。本文通過真實(shí)場景案例,來介紹如何合理使用阿里云現(xiàn)有產(chǎn)品的能力,在多賬號的環(huán)境中根據(jù)財(cái)務(wù)需求進(jìn)行分賬。
規(guī)劃設(shè)計(jì)
多賬號分賬:站在總公司視角,來歸集各阿里云賬號產(chǎn)生的賬單費(fèi)用,由企業(yè)管理賬號統(tǒng)一進(jìn)行出賬。
單賬號分賬:站在單個賬號視角,以部門/項(xiàng)目這種更細(xì)的力度進(jìn)行分賬。
多賬號分賬
財(cái)務(wù)關(guān)聯(lián)
從現(xiàn)有多個阿里云賬號中選擇一個賬號作為企業(yè)管理賬號,或者新建一個專門的企業(yè)管理賬號。其他賬號可以通過財(cái)務(wù)關(guān)聯(lián)的方式與企業(yè)管理賬號進(jìn)行連接,由企業(yè)管理賬號統(tǒng)一管理和處理賬單、發(fā)票和付款等財(cái)務(wù)信息。簡化財(cái)務(wù)管理流程,提高財(cái)務(wù)透明度和控制力。
第一步、企業(yè)管理賬號發(fā)起關(guān)聯(lián)邀請
企業(yè)管理賬號主賬號登錄“費(fèi)用與成本控制臺”,進(jìn)入“企業(yè)財(cái)務(wù)-賬務(wù)關(guān)聯(lián)”,點(diǎn)擊“邀請關(guān)聯(lián)賬號”按鈕,如下圖:
點(diǎn)擊“邀請關(guān)聯(lián)賬號”后,首先彈出“填寫關(guān)聯(lián)賬戶信息”頁面,您需要填寫“關(guān)聯(lián)的阿里云賬號”、”顯示名稱”,系統(tǒng)將自動校驗(yàn)子賬號是否滿足建立主、子財(cái)務(wù)關(guān)聯(lián)的條件。校驗(yàn)通過后點(diǎn)擊“下一步”,進(jìn)入下個步驟。
關(guān)系類型選擇“企業(yè)集團(tuán)關(guān)系”,關(guān)系策略選擇“財(cái)務(wù)管理”,全選或按需求選擇財(cái)務(wù)管理下的權(quán)限選項(xiàng),設(shè)置無誤后點(diǎn)擊“下一步”,進(jìn)入下一個步驟。
系統(tǒng)會向待關(guān)聯(lián)的子賬號發(fā)起邀請;待關(guān)聯(lián)的子賬號將收到站內(nèi)信、短信及郵件通知,需要確認(rèn)授權(quán)。
第二步、被邀請賬號接受邀請
被邀請賬號登錄“費(fèi)用與成本控制臺”后,進(jìn)入“企業(yè)財(cái)務(wù)-財(cái)務(wù)關(guān)聯(lián)”,點(diǎn)擊“確認(rèn)邀請”。
第三步、企業(yè)管理賬號查看關(guān)聯(lián)關(guān)系狀態(tài)
企業(yè)管理賬號主賬號登錄“費(fèi)用與成本控制臺”,進(jìn)入“財(cái)務(wù)關(guān)聯(lián)”,查看跟所有子賬號建立關(guān)聯(lián)關(guān)系的狀態(tài)。
共享信控
“信控額度”是阿里云給予部分大客戶一定的賬號透支的權(quán)限,可以先消費(fèi),后還款。客戶在有信控額度時,預(yù)付費(fèi)訂單及后付費(fèi)賬單,均可通過信控額度進(jìn)行支付或抵扣。企業(yè)管理賬號將信控額度分配給已關(guān)聯(lián)的賬號,共享企業(yè)管理賬號的信控額度。
第一步、企業(yè)管理賬號登錄“費(fèi)用與成本”,進(jìn)入“企業(yè)財(cái)務(wù)管理 - 財(cái)務(wù)資產(chǎn)管理 - 統(tǒng)一資產(chǎn)管理”,進(jìn)行各賬號的信控額度調(diào)整或首次額度劃撥。
在彈出的“信控額度設(shè)置”界面,設(shè)置該賬號的信控額度,完成后點(diǎn)擊“確定”按鈕。
第二步、被分配信控額度的賬號需登錄“費(fèi)用與成本”,進(jìn)入“合同管理 - 合同管理 頁面,在合同類型選擇信控合同,找到對應(yīng)待確認(rèn)的信控,進(jìn)行相應(yīng)的合同確認(rèn)操作。如下圖所示找到需要確認(rèn)的合同,點(diǎn)擊右側(cè)“確認(rèn)通過”,合同狀態(tài)變?yōu)椤吧е小焙螅撡~號被設(shè)置的信控額度才真正生效,并可以被使用。
統(tǒng)一結(jié)算
將同一個企業(yè)組織下不同賬號、賬期,統(tǒng)一建立定制化結(jié)算任務(wù),統(tǒng)一開具發(fā)票,避免了多個賬號各自匯款,開票,結(jié)算的繁瑣操作。
第一步、企業(yè)管理賬號登錄費(fèi)用與成本控制臺,進(jìn)入“企業(yè)財(cái)務(wù)管理-統(tǒng)一結(jié)算”,點(diǎn)擊“創(chuàng)建結(jié)算任務(wù)”按鈕,進(jìn)行創(chuàng)建統(tǒng)一結(jié)算任務(wù),如下圖:
第二步、點(diǎn)擊“創(chuàng)建結(jié)算任務(wù)”按鈕后,在創(chuàng)建統(tǒng)一結(jié)算任務(wù)頁面:設(shè)置結(jié)算單名稱;設(shè)置主賬號需要預(yù)留的金額,以防主賬號下運(yùn)行的業(yè)務(wù)可用金不足;根據(jù)賬號、賬期完成篩選,可在下方列表勾選想要結(jié)算的對象;點(diǎn)擊“保存草稿”,后續(xù)可以選擇草稿狀態(tài)的統(tǒng)一結(jié)算任務(wù)繼續(xù)編輯。完成上述配置后,點(diǎn)擊“下一步”按鈕。
第三步、生成結(jié)算單后,確認(rèn)結(jié)算單內(nèi)容,完成后點(diǎn)擊“生成并運(yùn)行結(jié)算單”按鈕,正式創(chuàng)建統(tǒng)一結(jié)算任務(wù)。
第四步、如果主賬號的賬戶余額大于結(jié)算單待結(jié)算金額時,會自動完成劃撥和核銷;如果主賬號的賬戶余額不足,主賬號充值后,系統(tǒng)將自動完成劃撥和核銷;當(dāng)結(jié)算金額被全部支付后,該統(tǒng)一結(jié)算完成。
多賬號分賬
企業(yè)管理賬號通過“月賬單概覽”功能查看整個企業(yè)的總賬以及各個子賬號的詳細(xì)費(fèi)用。
第一步、使用企業(yè)管理賬號登錄“費(fèi)用與成本控制臺”,進(jìn)入“賬單管理-月賬單概覽”,選擇賬期,點(diǎn)擊“賬單文件導(dǎo)出”按鈕。
第二步、導(dǎo)出賬號內(nèi)容選擇“全部賬號”,按需選擇賬期,導(dǎo)出內(nèi)容選擇“當(dāng)前實(shí)時月賬單PDF”,賬號是否合并選擇“是”,完成配置后點(diǎn)擊“確定”按鈕。
第三步、下載PDF后打開,找到“賬單支付匯總”,如下圖所示,即可看到各個賬號的分賬情況。
單賬號分賬
分賬準(zhǔn)備
資源組
- 財(cái)務(wù)單元分賬是按照資源組來進(jìn)行的,在創(chuàng)建資源的時候,必須慎重選擇資源組,以確保財(cái)務(wù)分賬的準(zhǔn)確性和合理性。
- 一個資源組代表著一個項(xiàng)目,它為項(xiàng)目的管理和推進(jìn)提供了清晰的分類和標(biāo)識
- 依據(jù)資源組可以創(chuàng)建飛書群,這個群將用于發(fā)送云資源告警和分賬賬單,方便及時了解資源狀況和財(cái)務(wù)情況。
- 賬號以資源組維度進(jìn)行授權(quán),進(jìn)一步明確了賬號的使用范圍和權(quán)限,保障了資源的安全和合理使用。
標(biāo)簽
財(cái)務(wù)單元
財(cái)務(wù)單元是基于規(guī)則歸集匯總云資源費(fèi)用或成本的工具,可根據(jù)自身成本分析維度需求設(shè)置分賬規(guī)則,并實(shí)現(xiàn)資源費(fèi)用歸集,以達(dá)到分賬的目的。
第一步、登錄賬號1,在費(fèi)用-分賬管理-財(cái)務(wù)單元處,點(diǎn)擊財(cái)務(wù)單元旁的加號,創(chuàng)建一級財(cái)務(wù)單元。
第二步、填寫上表所示的一級財(cái)務(wù)單元名稱,完成后點(diǎn)擊“確認(rèn)按鈕”。依次創(chuàng)建上表所示的一級財(cái)務(wù)單元。
第三步、點(diǎn)擊一級財(cái)務(wù)單元,在右側(cè)自動分配規(guī)則中,點(diǎn)擊“編輯”按鈕,按上表所示的自動分配規(guī)則進(jìn)行配置。按上表所示依次配置一級財(cái)務(wù)單元的自動分配規(guī)則。
第四步、點(diǎn)擊“總覽”,查看單賬號按部門分賬的情況
成本管家
開通成本管家
點(diǎn)擊https://sls.console.aliyun.com/lognext/app/bill_app/?resource=/setting
此鏈接,勾選“導(dǎo)入賬單授權(quán)”和“授權(quán)開通表格存儲”,點(diǎn)擊“立即更新”按鈕。
選擇“阿里云賬單導(dǎo)入”,點(diǎn)擊“下一步”按鈕。
點(diǎn)擊“更新資源&下一步”。
點(diǎn)擊“完成”按鈕。
成本管家導(dǎo)入分賬賬單
賬單明細(xì)中的財(cái)務(wù)單元,對于分拆型產(chǎn)品來說是不準(zhǔn)確的,分拆型產(chǎn)品的財(cái)務(wù)單元需要以分賬賬單內(nèi)的為準(zhǔn)。目前成本管家默認(rèn)沒有導(dǎo)入分賬賬單,如果需要導(dǎo)入的話,可以手動進(jìn)行如下幾步操作:
第一步、表格存儲創(chuàng)建數(shù)據(jù)表
點(diǎn)擊https://otsnext.console.aliyun.com/cn-wulanchabu/totalList
此鏈接,進(jìn)入表格存儲,選擇烏蘭察布區(qū)域,進(jìn)入’bss-'形式命名的實(shí)例。
選擇“數(shù)據(jù)表列表”,點(diǎn)擊“創(chuàng)建數(shù)據(jù)表”按鈕。
創(chuàng)建splititem_bill表,主鍵配置參考instance_bill,完成配置后點(diǎn)擊“確定”按鈕。
第二步、進(jìn)入成本管家執(zhí)行查詢語句
點(diǎn)擊https://sls.console.aliyun.com/lognext/profile此鏈接,找到“bill-analysis-”開頭,主賬號uid結(jié)尾的的project,點(diǎn)擊進(jìn)入。
雙擊名為“aliyun_bill”的logstore,在搜索框中填寫下面的SQL語句。其中 {endpoint}需要替換為表格存儲中’bss-‘開頭命名的實(shí)例經(jīng)典網(wǎng)絡(luò)訪問地址,{ots_instance_name}需要替換為表格存儲中’bss-‘開頭命名的實(shí)例名稱,{uid} 需要替換為主賬號uid。點(diǎn)擊“查詢/搜索”按鈕。
* | create table splititem_bill (hash_key varchar, __time__ bigint, __source__ varchar, instanceconfig varchar, productcode varchar, internetip varchar, outstandingamount double, pretaxamount double, instancespec varchar, subscriptiontype varchar, billingitem varchar, pretaxgrossamount double, usage double, producttype varchar, paymentamount double, listprice double, zone varchar, usageunit varchar, nickname varchar, productname varchar, currency varchar, tag varchar, invoicediscount double, productdetail varchar, item varchar, resourcegroup varchar, deductedbycashcoupons double, deductedbyprepaidcard double, ownerid varchar, billingdate varchar, listpriceunit varchar, deductedbycoupons double, instanceid varchar, serviceperiod double, deductedbyresourcepackage double, billingtype varchar, region varchar, intranetip varchar, accountname varchar, AdjustAmount double, BizType varchar,CashAmount double, CommodityCode varchar, CostUnit varchar, ServicePeriodUnit varchar, SplitAccountID varchar, SplitAccountName varchar, SplitBillingCycle varchar, SplitBillingDate varchar, SplitCommodityCode varchar, SplitItemID varchar, SplitItemName varchar, SplitProductDetail varchar ) with ( endpoint='{endpoint}',accessid='rolearn',accesskey='acs:ram::{uid}:role/aliyunserviceroleforslsaudit',instance_name='{ots_instance_name}',table_name='splititem_bill',type='tablestore')
第三步、聯(lián)系阿里云后臺創(chuàng)建分賬賬單的導(dǎo)入任務(wù)
儀表盤
訂閱
使用訂閱功能,每月初自動發(fā)送賬單儀表盤到飛書群。確保所有相關(guān)人員都能及時獲取最新的賬單信息,增強(qiáng)財(cái)務(wù)透明度,及時了解和控制成本,提高整體運(yùn)營效率。并且定期接收賬單數(shù)據(jù),方便進(jìn)行歷史對比和趨勢分析。
第一步、在儀表盤右上角選擇“訂閱”,點(diǎn)擊“創(chuàng)建”。
第二步、在彈出“創(chuàng)建訂閱”界面,輸入訂閱名稱和頻率,下圖示例為每月發(fā)送一次,完成上述配置后,點(diǎn)擊“下一步”按鈕。
第三步、通知選擇“WebHook-釘釘機(jī)器人”,填寫請求地址和標(biāo)題,完成上述配置后,點(diǎn)擊“提交”按鈕。
優(yōu)化
特殊產(chǎn)品自定義分賬
為了實(shí)現(xiàn)對MaxComputer、DataWorks、圖數(shù)據(jù)庫、ECI等云產(chǎn)品的分賬需求,由于這些產(chǎn)品無法通過資源組或標(biāo)簽的方式進(jìn)行分賬,我們決定通過修改表格存儲中的分賬賬單數(shù)據(jù)來達(dá)到目標(biāo)。鑒于賬單數(shù)據(jù)量龐大,我們采用腳本的方式代替人工操作。
為了避免直接修改原始分賬賬單數(shù)據(jù)(即splititem_bill表),我們的策略是先從splititem_bill表中讀取數(shù)據(jù),根據(jù)自定義的規(guī)則進(jìn)行修改,然后將處理后的數(shù)據(jù)寫入到一個新的表中。最后,我們將儀表盤的數(shù)據(jù)源切換到這個新創(chuàng)建的表上。
代碼邏輯,請見下面的流程圖:
此外,可能會出現(xiàn)多個應(yīng)用共享同一實(shí)例或集群的情況,這種情況下無法通過資源組或標(biāo)簽的方式實(shí)現(xiàn)精準(zhǔn)分賬。為了應(yīng)對這種情況,以容器服務(wù) Kubernetes(ACK)為例,首先需要梳理 ACK 關(guān)聯(lián)的所有資源實(shí)例及其費(fèi)用。可以通過成本洞察或其他工具對 ACK 資源進(jìn)行詳細(xì)的費(fèi)用分析,然后手動進(jìn)行分賬。
在讀取 splititem_bill 表的數(shù)據(jù)時,應(yīng)忽略 ACK 關(guān)聯(lián)資源的賬單,不將其寫入 splititem_bill_transform 表中。對于其他資源,按照既定的分賬規(guī)則進(jìn)行處理,并將結(jié)果寫入 splititem_bill_transform 表。代碼執(zhí)行完畢后,再手動將 ACK 的分賬結(jié)果按照我們的分賬邏輯寫入 splititem_bill_transform 表中。
最終效果如下圖所示,ack 這條數(shù)據(jù)即為我們手動寫入的分賬數(shù)據(jù),包含了ECS、SLB、SLS等相關(guān)費(fèi)用的詳細(xì)信息。通過這種方式,我們可以精確地跟蹤和管理每個項(xiàng)目的成本,確保費(fèi)用分配的透明性和準(zhǔn)確性。
按資源組維度發(fā)送通知
分賬不僅需要運(yùn)維人員了解,也需要通知應(yīng)用人員。我們將按照資源組(即應(yīng)用)的維度,每月發(fā)送前兩個月的費(fèi)用明細(xì)至各應(yīng)用團(tuán)隊(duì)所在的飛書告警群。確保各團(tuán)隊(duì)對成本分配有清晰的認(rèn)識,這有助于促進(jìn)資源的合理使用和成本的有效控制。通過這種方式,每個團(tuán)隊(duì)都能更好地管理自己的預(yù)算,避免不必要的資源浪費(fèi),提高整體運(yùn)營效率。
為了實(shí)現(xiàn)賬單數(shù)據(jù)的自動發(fā)送,我們有兩種方案可供選擇:一是利用阿里云的SDK直接獲取表格存儲 splititem_bill_transform 表的數(shù)據(jù);二是調(diào)用SLS的SDK(https://api.aliyun.com/api/Sls/2020-12-30/GetLogsV2?sdkStyle=dara)獲取賬單數(shù)據(jù),其本質(zhì)也是從SLS的表映射中獲取 splititem_bill_transform 表的數(shù)據(jù)。無論采用哪種方式,最終目標(biāo)是通過Webhook將前兩個月的賬單數(shù)據(jù)自動發(fā)送到指定的飛書群中,效果如上圖所示。
可用額度告警
在企業(yè)管理賬號上可以看到各個賬號的可用額度,且可以為各個賬號設(shè)置可用額度閾值告警,如下圖所示。但是這個預(yù)警通知,只能發(fā)送到子賬號維護(hù)的安全手機(jī)、郵箱及站內(nèi)信,且每天提醒一次,最多連續(xù)5天,可能導(dǎo)致重要通知被忽略或延遲處理。
為此,通過編寫自定義腳本的方式,
各個賬號調(diào)用https://api.aliyun.com/api/BssOpenApi/2017-12-14/QueryAccountBalance
這個接口,獲取每個賬號的可用額度,并設(shè)置規(guī)則,當(dāng)可用額度小于信控額度的20%就發(fā)送告警。最終效果如下圖所示:
術(shù)預(yù)算超支告警
為了更好地管理和監(jiān)控阿里云資源的消費(fèi)情況,建議設(shè)置年度消費(fèi)閾值,并根據(jù)該閾值計(jì)算每月可消費(fèi)金額。每月定期發(fā)送通知,報告各賬戶當(dāng)月和當(dāng)年的總消費(fèi)金額、可消費(fèi)金額以及已消費(fèi)金額占可消費(fèi)金額的比例。同時,羅列各賬號當(dāng)月的具體消費(fèi)金額,并附帶賬單儀表盤,以便直觀地查看消費(fèi)情況。最終效果如下圖所示:
若當(dāng)月消費(fèi)超過每月預(yù)算值,則另外發(fā)送預(yù)算超支告警。
遇到的問題
某個實(shí)例的分賬費(fèi)用突增
如下面兩個圖所示,同一快照不同月份的應(yīng)付金額不同,且相差較大。
阿里云的說法:
阿里云的云產(chǎn)品定價策略是到小數(shù)點(diǎn)后6位~12位,但是采取的結(jié)算策略是在商品粒度按一系列出賬規(guī)則匯總結(jié)算并出賬,結(jié)算過程中將6位~12位小數(shù)位抹零減少到2位小數(shù)后和客戶進(jìn)行結(jié)算。
結(jié)算后為了滿足客戶精細(xì)化對賬需求,又會將商品粒度2位的結(jié)算金額反攤至2位的資源實(shí)例和計(jì)費(fèi)項(xiàng)粒度,反攤過程中因存在算術(shù)上除不盡的情況,此時會把除不盡的零頭隨機(jī)記在某個資源實(shí)例或計(jì)費(fèi)項(xiàng)上,這就導(dǎo)致了明細(xì)賬單中某些資源實(shí)例、計(jì)費(fèi)項(xiàng)對應(yīng)的賬單出現(xiàn)”應(yīng)付金額“大于優(yōu)惠金額扣減之前的“官網(wǎng)價”的情況。
該現(xiàn)象是在整條賬單結(jié)算完成,賬單向更細(xì)粒度數(shù)據(jù)做拆分時產(chǎn)生,因此并不影響客戶和阿里云的真實(shí)結(jié)算金額。
這個抹零和除不盡的金額是阿里云的結(jié)算策略,目前來講是無法改變的。
簡單的說:應(yīng)付金額只顯示2位小數(shù),實(shí)際金額到小數(shù)點(diǎn)后6位~12位,兩者匯總算起來就存在差價,這個差價會隨機(jī)記在某個資源實(shí)例或計(jì)費(fèi)項(xiàng)上。
總結(jié)
至此,通過企業(yè)管理賬號,根據(jù)成員賬號及其所屬的部門進(jìn)行分賬,實(shí)現(xiàn)成員賬號費(fèi)用的部門分?jǐn)偤秃怂恪M瑫r,各個子賬號根據(jù)各自的項(xiàng)目進(jìn)行獨(dú)立的分賬操作,確保每個項(xiàng)目的費(fèi)用分?jǐn)偤头峙洌瑢?shí)現(xiàn)獨(dú)立成本核算和費(fèi)用管理,提高費(fèi)用透明度和準(zhǔn)確性。