使用BigQuery來分析GCP費用

如何使用BigQuery來分析我們在 GCP帳單費用。

雲端的各項計費會比我們在地端機房的項目計費要複雜得多,原因是因為地端機房的設備都是看得到,摸得見的。即使是軟體採購該項軟體也會有資產編號。所以對IT人員來說分析地端機房的軟硬體設備(這些是固定資產)就不會太困難,一張Excel表可能就可以搞定。而雲端服務的計費卻可能可以很細緻,尤其雲端服務是Pay-as-you-go,服務是動態在改變的。所以分析雲端的使用費用就變成一個挑戰。

Google Cloud現可以將帳務資料"每日自動的"匯出到BigQuery(以下簡稱BQ)的Dataset中以便企業能夠詳細的分析GCP的使用情況,像是uasge, cost estimates, 與 pricing data。最後還可以連結 GCP的Data Studio對其費用分析視覺化提供企業的高階管理人員(如CIO, CFO等)了解企業對於雲端的ROI。

要得到完整的GCP費用分析報告我們會有以下三個主要作業需要執行:

  1. 設定GCP Billing data 到 BigQuery
  2. 理解 Billing data tables結構
  3. 使用GCP提供的SQL語法來查詢資料

設定GCP Billing data 到 BigQuery

這項作業第一件工作便是啟用 Billing data到BQ,以下為我們需要完成的工作事項

  • create一個 project,這個project為專門只存放帳務資料。這麼做是因為將技術與財務方面的資料分開,這樣權限也方便控管帳務資料也清楚。
  • 設定Billing account在該Project 應有的BQ 權限
  • 啟用BQ的 Data Transfer Service API(如果需要匯出 pricing data此步驟為必要作業)
  • Create一個BQ的DataSet來存放帳務資料
  • 最後將 Billing data與 pricing data寫入BQ DataSet

Billing Account所需的權限

billing account 需要有”Billing Account Administrator” role ,在該專用的Project: "BQ User Role"

如果還要匯出”pricing data”就要再加上
BQ Admin role + resourcemanager.projects.update.

確定好我們該有的權限都有了之後,我們就要啟用將Billing data export到BQ。首先我們在GCP console中點選Billing >>Billing export(如下圖)

接著我們會看到三個選項可以讓我們enable,分別是 Standard usage cost, Detail usage cost與 Pricing(如下圖)

我們可以逐一開啟我們要的要匯入的資料種類,例如我們要開啟standard usage cost ,點選 EDIT SETTING後可以看到如下圖所示

上圖中我們需要選擇要將資料放在哪個Project中的哪個 BQ Dataset,這兩項我們可以預先做好或是在這個頁面中直接create 一個新的project and dataset。

這邊需要特別說明一下Standard usage cost與Detailed usage cost在設定上的不同之處。如果我們需要看詳細的帳務資料就需要啟用Detailed usage cost,而如果是選用此項我們則不用再選擇Standard usage cost,因為Detailed usage cost已經將Standard usage cost包含在內了。而如果我們是使用Standard usage cost則BQ Dataset的location可以選清單(如下圖一)上有的,如果是Detailed usage cost,GCP要求Dataset需要是multi-region的。所以只有US與EU可以選擇(如下圖二)。

圖一
圖二

另外我們的帳務資料可以選擇要存放多久(幾天)後刪除,在圖一中我們可以看到"enable table expiration”。

另外standard usage cost 與 pricing 的這兩項資料 與detailed usage cost的資料在我們在我們啟用將將帳務資料匯出到BQ有很大的不同。

如果是standard usage cost 與 pricing 的這兩項資料,在我們啟用BQ之後資料並部會追朔我們啟用之前。也就是如果我們是當月10號啟用,哪standard usage cost 與 pricing我們只在隔天的BQ中看見10號開始算起的資料。如果是detailed usage cost就會追朔到"當月與上個月"的資料。例如若我們是9/10啟用,我們可以看到8月整個月及9/1- 9/10的資料。另外我們若是刪除BQ裡的帳務歷史資料,GCP無法幫我們回復這些歷史資料。

理解 Billing data tables結構

這一段我們會來介紹 Standard usage cost / Detailed usage cost / Pricing 這類的資料內涵甚麼樣的資訊。不過這裡需要提醒一點,在BQ裡的帳務數據與最後收到的invoice 裡的服務使用數據會有一些差異。哪是因為Google Cloud對billing data(to BQ)跟 invoice 中的usage data會有幾天的誤差。

所以我們在查詢帳務資料時實際的服務的使用時間要用timestmap的方式來查詢,我們在table中有三個欄位可以使用分別是

  • usage_start_time
  • usage_end_time
  • export_time

而若是依照GCP的invoice出帳的資料來查詢則使用 “inovice.month”這個欄位。

Standard usage cost

這一類的資料包含了 account ID, invoice date, services, SKUs, projects, labels, locations, cost, usage, credits, adjustments, and currency.我們在BQ的Dataset中看到table name命名方式會是:

gcp_billing_export_v1_<BILLING_ACCOUNT_ID>

該table的schema可參考GCP的文件庫

Detailed usage cost

這一類的資料是最詳細的,因為它包含了Standard data的額外資料(resource-level cost data),像是VM與其掛載的SSD產生的每日花費。另外這一類的資料會很詳細,若組織沒有做Data lifecycle而將歷史資料積累在BQ裡費用可能會逐月的增加。

而這一類的table命名則與standard usage cost相同,並且會多出三個欄位

Pricing Data

這類的資料包含account ID, services, SKUs, products, geographic metadata, pricing units, currency, aggregation, and tiers.而在BQ dataset裡, Pricing data的table name為”cloud_pricing_export”。

使用GCP提供的SQL語法來查詢資料

GCP提供多個使用者經常需要查詢的資料的SQL查詢語法的範例,以下為幾個我們常用的。更多的範例可以參考GCP的文件庫

Standard usage cost data examples

針對每個Invoice加總所有的使用費用(如下圖)

檢視我們的承諾折扣費用(如下圖)

視覺化帳務資訊

最後我們可以使用GCP的Data Studio來觀看及時的帳務。首先我們需要連結到Billing Report Demo的網站。(PS.要使用這項服務我們必需有Cloud Billing Administrator的權限才可以)

當我們開啟這個網站後畫面大概如下:

請點選左手邊的 Read me,並依照裡面的七個步驟將我們的BQ裡的帳務資料與Data Studio做連結。

我們可以自行調整Data Studio裡的圖表,以下為一個範例示意圖。

以上為GCP的帳務資料連結到BQ的簡單的介紹,將資料匯入到BQ中只要權限都有其實不難。挑戰在於我們對此資料的"保存與應用"

例如這個帳務資料的data lifecycle應該是要怎麼樣的?如何財務單位配合等?

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet