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キーへのpathを入れた環境変数経由でGoogle BigQueryに対し認証を行います
- 開発環境で実行する場合は
gcloud
コマンドで認証しておくだけでOKです
というわけでプラグイン用の認証アカウントと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使う)。