Send GCP Billing metrics to Mackerel

Google BigQueryへエクスポートしたGCP Billingデータを使ってmackerelにGCP Billingのメトリクスを送ってみます。

メトリクスを送るためのプラグインは夜な夜な作りました。オプションにプロジェクトIDとデータセット名とテーブル名を指定すると現日付けの月の合計のBillingデータを取得することが出来るプラグインです。早く使ってみたい!

準備

このプラグインは実行するための条件がいくつかあります。

テーブルに以下のスキーマが必要

  • cost(FLOAT型)
  • start_time(TIMESTAMP型)

課金データのエクスポート機能でGoogle BigQueryにデータを送っていれば特に考えることはないはず。

サーバ上で実行するにはGoogle BigQueryに対する権限を持っている認証アカウントのjsonキーが必要

というわけでプラグイン用の認証アカウントとjsonキーを作ってみます。

以下のスクリーンショットを参照。

ここまででjsonキーが手に入ります。

実行できるか試してみる

サーバにプラグインと作成したjsonキーをアップロードします。

scp ponpokopon-xxxxxxxx.json lorentzca.me:  
scp linux_amd64_mackerel-plugin-gcp-billing lorentzca.me:  

サーバにログインし、環境変数を設定します。

export GOOGLE_APPLICATION_CREDENTIALS=/home/lorentzca/ponpokopon-xxxxxxxx.json  

実行してみます。

$ ./linux_amd64_mackerel-plugin-gcp-billing -d billing -p ponpokopon-xxxx -t gcp_billing_export_00AA78_858318_441716
billing.cost    0.002873        1485948224  

Yay!

mackerel-agentから呼び出す

とにかく試してみたいので色々雑な感じな以下の設定を/etc/mackerel-agent/conf.d/metrics_gcp-billing.confとして追加します。

[plugin.metrics.gcp-billing]
command = "env GOOGLE_APPLICATION_CREDENTIALS=/home/lorentzca/ponpokopon-xxxxxxxx.json /home/lorentzca/linux_amd64_mackerel-plugin-gcp-billing -d billing -p ponpokopon-xxxx -t gcp_billing_export_00AA78_858318_441716"  

mackerel-agentをreloadします。

sudo systemctl reload mackerel-agent  

キタ━━━━(゚∀゚)━━━━!!

感想

Golang初心者でもgo-mackerel-plugin-helperを使えば思ったより簡単にメトリクスを送れることがわかりました。

今後はプラグインのリファクタリングやREADMEの整備、とりあえずで手でサーバに設置したプラグインとjsonキーをAnsible管理下に置いていこうと思います。

また、jsonキーのパーミッションや設置の方法についても何かしら工夫してみようと思います(多分Vault使う)。

参考