Get GCP Billing with Node.js

Node.jsのBigQueryクライアントライブラリを使ってみました。

今回はこれを使ってGCPのBillingデータを取得してみます。

※ GCPのBillingデータをBigQueryに送る方法は以下。

以下のようなコードを書いてみます。

// Imports the Google Cloud client library
// Instantiates a client
var bigquery = require('@google-cloud/bigquery')({
  projectId: 'GCPのプロジェクトID',
  keyFilename: 'BigQueryへアクセスするためのjsonキーのpath'
});

// Query
var query = 'SELECT SUM(cost) AS sum_cost, LEFT (FORMAT_UTC_USEC( UTC_USEC_TO_MONTH(TIMESTAMP_TO_USEC(start_time))), 7) AS month FROM billing.gcp_billing_export_00AA78_858318_441716 GROUP BY month HAVING month = LEFT (CURRENT_DATE(), 7)'

// Run query
bigquery.query(query, function(err, rows) {
  var monthly_cost = rows[0]["sum_cost"];

  console.log(monthly_cost);
});

クエリが1行で分かりづらいですが以下のようなクエリです。当月のcostの合計を出しています。

SELECT
  SUM(cost) AS sum_cost,
  LEFT (FORMAT_UTC_USEC( UTC_USEC_TO_MONTH(TIMESTAMP_TO_USEC(start_time))), 7) AS month
FROM
  billing.gcp_billing_export_00AA78_858318_441716
GROUP BY
  month
HAVING
  month = LEFT (CURRENT_DATE(), 7)

Node.jsのライブラリを使ってBilling情報が取れました。 ✨

$ node ./gcp_monthly_cost.js
0.15688500000000002

感想

次はmackerelのサービスメトリックにBilling情報を投稿するところまでやる!

参考