去る 10月5日に、Mackerel DAY というイベントが開催された。サーバー監視サービス・Mackerel のリリース3周年を祝っての大型イベントで、豪華登壇陣をゲストに迎え、お昼過ぎから懇親会まで、非常に濃密な時間だった。僕もスタッフとして参加し、また登壇もさせていただいた(僕の登壇スライドはこちら)。
豪華登壇陣、と書いたが、本当に豪華で、非常に多種多様な観点でのお話を聴くことができ、中の人としても・いちユーザーとしても、大変貴重な時間だった。そんななか、ガツンと脳天に響いたセッションが、メルカリ社の SRE チーム所属・プリンシパルエンジニアの id:kazeburo ( @kazeburo )さんの発表だった。
内容としては、メルカリ社における Mackerel のサービス/ロール設計のお話と、独自に作成しておられるカスタムスクリプト/プラグインの紹介というもの。
文字通り、Mackerel をフル活用されているからこその内容を目の前にして、とにかくすごいと思った。僕は居ても立ってもいられなくって、公開されているカスタムスクリプト・プラグインをひとつずつ見てみることにした。公開されているものには大別して「LL言語(Perl)で書かれているもの」( http://github.com/kazeburo/custom-mackerel-plugins )と「Go言語で書かれているもの」( https://github.com/kazeburo/ )とがあって、今回のこの記事はそのうちの前者について。
ちなみに言語の使い分けについてはこちらのスライドに書かれていて、「コマンドの呼び出しと結果の処理だけで実現できるもの」「HTTPリクエストと JSON 処理があるもの」については LL 言語で書く、という方針のようす(AWS API の利用や DB への接続などをおこなう必要のあるものは Go 言語で、とのこと)。
Mackerel のプラグインは終了コード、もしくは標準出力結果をパースする仕様なので、言語を選ばず書ける(それこそ shellscript でも)のがよいところ。
以下は、ひとつずつ見ていきながら気づいたこととかのメモ。
続きを読む