My Note

自己理解のためのブログ

GoでAWSのBilling情報をグラフ化するmackerel-pluginを作った

明けましておめでとうございます。2019年最初の記事です。

公式プラグインでも利用しているGo言語でのカスタムメトリックプラグイン作成用ライブラリの github.com/mackerelio/go-mackerel-plugin を利用して、GoでAWSのBilling情報をMackerelダッシュボードにグラフ化するmackerel-pluginを初めて作りました。

Mackerelの公式サイト

開発環境と実行環境

  • 開発環境
  • 実行環境
    • AWS
      • EC2
        • Ubuntu16.04
        • mackerel-agent
        • IAMロール(Billingが取得できる権限をEC2に付与)

今回作ったmackerel-plugin-awsbillingのソースコードは以下

EC2のUbuntuサーバに設定

  • Macローカルでmain.goをUbuntu上で動くようにクロスコンパイルする。

    • GOOS=linux go build -o bin/mkr-plugin-aws-billing
  • このpluginを実行するにはAWSAPIを実行できるIAMが必要です。

    • 今回はEC2インスタンスにBiliing情報を取得できるようにIAMロールを付与しました。
  • Ubuntuサーバの以下のパスに配置しました。
    • /usr/local/yhidetoshi/mkr-plugin-aws-billing

mackerel-agentを設定

  • /etc/mackerel-agent/mackerel-agent.confを以下のように別ファイルの設定も有効にできるようにする。
apikey = "XXXXXXXXXXXXX"
include = "/etc/mackerel-agent/*"
  • /etc/mackerel-agent/get_billing
[plugin.metrics.awsbilling]
command = '/usr/local/yhidetoshi/mkr-plugin-aws-billing -region us-east-1'
  • mackerel-agentを再起動する
    • $ sudo systemctl restart mackerel-agent

Mackerelダッシュボードのグラフを確認

mackerel-agentに設定したホストにカスタムメトリックにグラフが追加された。

mkr-aws-billing-qiita.png

まとめ

Goを使って、mackerel-pluginを初めてつくりました。Pluginを作ることでGoの学習になりますし、またシステムを可視化することもできます。今後も別のプラグインを作っていきたいと思います。