mackerel-client-goを使ったBotを作る

この記事はMackerel Advent Calendar 2016 9日目の記事です。去年も参加していたので2年連続の参加になりました。

qiita.com

前日はt_mrtさんの「Synology DiskStation DS215j に mackerel-agent をインストールしてディスクの様子を監視する」でした。

blog.yux3.net

作ったもの

github.com

Mackrelにログインするほどでもなく、mkrよりカジュアルにメトリクスを確認できるようなものがあったらいいかな。と思ったのをきっかけに、

Slackでmkr [Mackerel上のホスト名] と発言すると、そのホストの最新のメトリクスを返してくれるBotを作りました。

f:id:ariarijp:20161208220657p:plain

Go言語力はまだまだ弱いので、気になることがあればPRやコメントをいただけたらうれしいです。

使ったもの

Githubで公開されているmackerel-client-goと、Slack Advent Calendarの記事で取り上げられていた nlopes/slackを使っています。

github.com

blog.kaneshin.co

github.com

使い方

READMEのとおりですが、go getして環境変数を2つexportすれば準備完了です。

$ go get -u github.com/ariarijp/sababot
$ export SLACK_API_TOKEN="YOUR_SLACK_API_TOKEN"
$ export MACKEREL_API_KEY="MACKEREL_API_KEY"
$ sababot

事前準備としてSlackのBot作成が必要ですが、先に紹介した記事でも説明されていますので、この記事では割愛します。

Botが参加しているチャンネルなどでmkr [ホスト名] と発言すると、使用しているMackerelのAPIキーのオーガニゼーションないからホストを検索し、該当するホストがある場合は、そのホストの情報を取得して、発言のあったチャンネルに返信するような感じになっています。

mackerel-client-goについて

mackerel-client-goはMackerelのCLIツール、mkrでも使用されています。

github.com

公式に提供されているCLIツールでも使用されていることもあり、だいたいのAPIを呼び出す操作はmackerel-client-goに任せられるので、Mackerelをちょっとハックして便利にしたいときに重宝しそうです。

mackerel-client-rubyもありますが、個人的にはmackerel-agentやプラグインと同様にGo言語で書いて、どこでもシングルバイナリで動くようにできるほうがうれしいかなと思っています。

まとめ

なんだかリンクをベタベタ張った記事になってしまいましたが、mackrel-client-goやnlopes/slackという既存の部品を組み合わせるだけで、「エンジニアがワクワクする」ことができるツールをサクッと作れるのも、Mackerelの良いところなんじゃないかなと思っています。

いちおうMackerelのリンクも張っておきましょう。まだ触ったことがなければ、とにかく気軽にトライアル利用してみたほうがいいですよ!

mackerel.io

こざっぱりとした内容でしたが、私の記事は以上です。明日はstefafafanさんの「MackerelとGoogle Apps Scriptでオフィスの環境を監視(仮題)」です。エアコンや乾燥でオフィスの環境が気になるこの季節なので、実に気になるタイトルですね!