公式プラグインでも利用しているGo言語でのカスタムメトリックプラグイン作成用ライブラリの
github.com/mackerelio/go-mackerel-plugin
を利用して、GoでAWSのBilling情報をMackerelダッシュボードにグラフ化するmackerel-pluginを初めて作りました。
Mackerelの公式サイト
- go-mackerel-pluginを利用してカスタムメトリックプラグインを作成する
開発環境と実行環境
- 開発環境
- Mac: 10.14.1
- Golang: 1.11.2
- Goland
- Mac: 10.14.1
- 実行環境
- AWS
- EC2
- Ubuntu16.04
- mackerel-agent
- IAMロール(Billingが取得できる権限をEC2に付与)
- EC2
- AWS
今回作ったmackerel-plugin-awsbillingのソースコードは以下
EC2のUbuntuサーバに設定
-
Macローカルでmain.goをUbuntu上で動くようにクロスコンパイルする。
GOOS=linux go build -o bin/mkr-plugin-aws-billing
-
このpluginを実行するにはAWSのAPIを実行できるIAMが必要です。
- 今回はEC2インスタンスにBiliing情報を取得できるようにIAMロールを付与しました。
-
Ubuntuサーバの以下のパスに配置しました。
/usr/local/yhidetoshi/mackerel-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/mackerel-plugin-aws-billing -region=us-east-1'
- mackerel-agentを再起動する
$ sudo systemctl restart mackerel-agent
Mackerelダッシュボードのグラフを確認
mackerel-agentに設定したホストにカスタムメトリックにグラフが追加された。
Mackerel公式のレジストリに登録する
mackerelのレジストに登録されれば、mkr plugin install プラグイン名
でインストールすることができるようになる。方法は以下のMackerel公式のブログでで説明されている。
- mkr plugin installに対応したプラグインをする
GitHubでリリースを自動化するために、TravisCIを利用。コード等は以下でサンプルが用意されていたので利用しました。
TravisCIで自動リリースすると、以下のように、コンパイルしたものをzip化されたものが生成される。
リリースまで完了したら、以下のリポジトリにPullRequestを投げる。PRを投げるときは、以下のリポジトリをForkしてからPRを作成しました。
→ PRがMergeされて、mkr plugin install プラグイン名
でインストールすることができるようになりました。
$ sudo mkr plugin install mackerel-plugin-awsbilling
Password:
Downloading https://github.com/yhidetoshi/mackerel-plugin-awsbilling/releases/download/v0.0.3/mackerel-plugin-awsbilling_darwin_amd64.zip
/opt/mackerel-agent/plugins/bin/mackerel-plugin-awsbilling already exists. Skip installing for now
Successfully installed mackerel-plugin-awsbilling
まとめ
Goを使って、mackerel-pluginを初めてつくりました。Pluginを作ることでGoの学習になりますし、またシステムを可視化することもできます。そして、作ったプラグインをmkrのレジストリに登録するところまでやりました。今後も別のプラグインを作っていければと思います。