2016-10 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
弊社の @tjinjin が作った mackerel-plugin-aws-billing は導入は簡単
だし、AWS 料金の推移が気軽に見られるので、Fastly 版を作ってみました。
masutaka/mackerel-plugin-fastly-billing
Fastly billing custom metrics plugin for mackerel.io agent.
Fastly は少し前から会社で使い始めています。なかなか便利で、CDN な
のに一瞬でキャッシュを消せるのもさることながら、料金含めた全てのメ
トリクスがリアルタイムで見られるのがすごいですね。今のところ、超安
定稼働しています。
さて、今回作った mackerel-plugin-fastly-billing は Fastly の
Billing API を叩いて、その月の現在の料金を取ってくるシンプルな
plugin です。curl 的には例えば以下になります。
$ curl -s -H "Fastly-Key: <Fastly API Key>" \
https://api.fastly.com/billing/year/2016/month/10 | jq .total.cost
先日、mackerel-plugin-delayed-job-count も作ったのですが、
Go で Mackerel の delayed_job plugin を作った|feedforce Engineers' blog
今回は少しパワーアップしております。delayed_job も追随しよう...。
main() を先頭に書きました。持論ですが、コードは上から下に流れるよ
うに書くと読みやすいと思います。
最初の会社で C を書いていた頃は、特にそのようにしていましたが、LL
だとそう書けないことがあるので、最近は自重していました。Go はコン
パイル型言語で C にも似ているので、以前の書き方にしてみました。
外部変数を使うのも止めました。
以前の Plugin interface と違う点は MetricKeyPrefix() が増えたこと
です。7/6 に実装されているので、むしろなぜ前回使わなかったのか、
という話もあります...。
MetricKeyPrefix() は mackerel-agent.conf でメトリクス名のコンフリ
クトを避けるために、CLI オプション -metric-key-prefix とともに実装
が奨励されています。
詳しくは README.md や以下の PR をどうぞ。
https://github.com/mackerelio/go-mackerel-plugin-helper/pull/15
※ この時の名前はまだ GetMetricKeyPrefix() です。
おかげで少し堅牢な実装にすることが出来ました。CI も始めました。
何年ぶりだろう...?
現在は GitHub へのリリースの手間軽減のために、linux/amd64 用のバイ
ナリをビルドして、sha256 checksum を出力するだけです。まだ(?)自動
化はしていません。
Mackerel plugin は Go の素振りをするのにちょうどよいサイズで、大変
気に入っています。なにかネタがあれば、積極的に作っていく予定です。
2016-10 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
最終更新時間: 2016-10-21 11:38