Go で Mackerel の Fastly billing plugin を作った
弊社の @tjinjin が作った mackerel-plugin-aws-billing は導入は簡単 だし、AWS 料金の推移が気軽に見られるので、Fastly 版を作ってみました。 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 にも似ているので、以前の書き方にしてみました。 外部変数を使うのも止めました。 PluginWithPrefix interface で実装した 以前の Plugin interface と違う点は MetricKeyPrefix() が増えた こと...