mackerel-client-goを使ったBotを作る
この記事はMackerel Advent Calendar 2016 9日目の記事です。去年も参加していたので2年連続の参加になりました。
前日はt_mrtさんの「Synology DiskStation DS215j に mackerel-agent をインストールしてディスクの様子を監視する」でした。
作ったもの
Mackrelにログインするほどでもなく、mkr
よりカジュアルにメトリクスを確認できるようなものがあったらいいかな。と思ったのをきっかけに、
Slackでmkr [Mackerel上のホスト名]
と発言すると、そのホストの最新のメトリクスを返してくれるBotを作りました。
Go言語力はまだまだ弱いので、気になることがあればPRやコメントをいただけたらうれしいです。
使ったもの
Githubで公開されているmackerel-client-goと、Slack Advent Calendarの記事で取り上げられていた nlopes/slackを使っています。
使い方
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でも使用されています。
公式に提供されているCLIツールでも使用されていることもあり、だいたいのAPIを呼び出す操作はmackerel-client-goに任せられるので、Mackerelをちょっとハックして便利にしたいときに重宝しそうです。
mackerel-client-rubyもありますが、個人的にはmackerel-agentやプラグインと同様にGo言語で書いて、どこでもシングルバイナリで動くようにできるほうがうれしいかなと思っています。
まとめ
なんだかリンクをベタベタ張った記事になってしまいましたが、mackrel-client-goやnlopes/slackという既存の部品を組み合わせるだけで、「エンジニアがワクワクする」ことができるツールをサクッと作れるのも、Mackerelの良いところなんじゃないかなと思っています。
いちおうMackerelのリンクも張っておきましょう。まだ触ったことがなければ、とにかく気軽にトライアル利用してみたほうがいいですよ!
こざっぱりとした内容でしたが、私の記事は以上です。明日はstefafafanさんの「MackerelとGoogle Apps Scriptでオフィスの環境を監視(仮題)」です。エアコンや乾燥でオフィスの環境が気になるこの季節なので、実に気になるタイトルですね!