株式会社はてな さんから献本頂きました。ありがとうございます。
書籍「Mackerel サーバ監視[実践]入門」を執筆しました | おそらくはそれさえも平凡な日々
書籍「Mackerel サーバ監視[実践]入門」を執筆しました Mackerel サーバ監視[実践]入門 やっと出せました。この本は、僕がはてなに入社してからずっと携わっている、 Mackerel と...
http://www.songmu.jp/riji/entry/2017-08-28-mackerel-book.html
僕が Mackerel を知ったのは2014年5月の事でした。
mackerel-agentをオープンソース化しました - Mackerel ブログ #mackerelio
本日、mackerel-agentを オープンソース 化しました。 リポジトリ は GitHub 上の mackerelio/mackerel-agent です。 mackerel-agentは Go...
https://mackerel.io/ja/blog/entry/2014/05/16/142556
昔からはてなの少しギーク寄りなサービスが大好きだったのと、mackerel-agent が僕の好きな Go言語 で書かれていた事もあり、いち早く GitHub からソースを git clone して眺めていました。初見から Windows に対応していない事を知った僕はすぐさますぐさま Windows porting に取り掛かり、プルリクエストを送りました。
Windows porting by mattn - Pull Request #8 - mackerelio/mackerel-agent - GitHub
https://github.com/mackerelio/mackerel-agent/pull/8
あれから3年経ちました。Mackerel はどんどん大きくなって SI 業や Web ホスティング業など色々な企業で使われる様になり、今や国内の SaaS 型サーバ監視サービスの先駆者的なポジションを確立したのではないかと思います。
Mackerel ではサービスだけでなく mackerel-agent も日々改良が加えられており、現在では僕が書いた Windows 向けのコードはほぼ無くなってしまったかもしれませんが、今思えば僕が Windows に移植した mackerel-agent が様々な企業で使われ、刻々とサーバのメトリクスを休む事なく Mackerel サーバに送り続け、問題が起きた Windows サーバのアラートを上げていると考えると「あぁ、いい仕事したな」と胸が熱くなると同時に、「あれ僕が Windows 移植したんだ」と誇らしい気持ちにさえなりました。
今回読んだ「Mackerel サーバ監視[実践]入門」はこう言った Mackerel の生い立ちだけでなく Mackerel そのものの概念、監視のイロハ、活用例など、数千のサーバを管理している彼らでないと書けない実践的な内容が包み隠さず書かれています。
Mackerel というサービスの利用者は一般ユーザではありません。インフラを管理する、どちらかと言えば開発者寄りの方達です。エンジニアである Mackerel の開発者が、開発者に向けて OSS として機能を提供しているので Mackerel には気の利いた機能が沢山あります。mackerel-agent が使用するプラグインもその一つです。サーバの監視で必要と思われる様なプラグインが既に沢山作られています。
GitHub - mackerelio/mackerel-agent-plugins: Plugins for mackerel-agent
https://github.com/mackerelio/mackerel-agent-plugins
GitHub - mackerelio/go-check-plugins: Check Plugins for monitoring written in golang
https://github.com/mackerelio/go-check-plugins
一度プラグインを作ってみられると分かると思いますが、ドキュメントもあり参考にできるプラグインも沢山あるので簡単に実装できると思います。アイデア次第では色々な使い方があると思います。例えば温度計や水位計と連動してアラートを上げたり、PC であれば Windows のセキュリティパッチが未インストールの場合にアラートを上げるなんて事も実に簡単に実装する事が出来ます。
Mackerel チェック機能の意外と知られていないテクニック集 - Qiita
http://qiita.com/mattn/items/b7099044263875ed1f73
本書ではコード例も付けて実際に mackerel-agent プラグインを作る手順が細かく書かれています。Go言語は言語仕様が難しくないので、この本片手に簡単にプラグインが作れると思います。
もう一つ僕が気に入っている Mackerel の機能が mkr です。mkr は Mackerel の設定やメトリクス値を簡単に操作できる CLI です。
GitHub - mackerelio/mkr: Command Line Tool for Mackerel
https://github.com/mackerelio/mkr
このツールを使えば監視しているホストの状態取得やメトリクス値を抜き出す事が出来ます。本書にもこの mkr を使ったテクニックが色々と書かれています。これは本書で知ったのですが、どうやら はてな社は Mackerel をホスト管理としても使っている様で、数千いるサーバのロールをうまくラベリングして運用されているとの事でした。API を直接叩いてホスト一覧を得る事もそれほど難しくはありませんが、mkr の様にコマンド一発で色々な情報を Mackerel から抜き出せる機能は、多くのサーバを管理しているエンジニアにとっては必須アイテムかと思います。Mackerel ユーザで mkr を使った事ない方はぜひ使ってみると良いです。
僕が本書で一番おもしろいと思ったのは、実は巻末部分でした。Mackerel というサービスがどの様に構成されているかが書かれています。なぜ PostgreSQL や Graphite を使っているのか、そして今後の為に Graphite から移行しようとしていると言った内容が惜しげもなく書かれており、今も進み続ける Mackerel らしさが良く分かる内容でとても興味深く読ませて頂きました。
特に Mackerel が今のアーキテクチャに至った経緯の解説をしている節では、Mackerel のサーバがどういった理由でこういう構成になっているのかが理由を交えて詳しく書かれており、「あぁ、Mackerel を大事に育ててるんだな」と凄く伝わる内容でした。
不慮の障害を避ける為には、監視は機械的でなければなりません。人間による、しかも属人的な監視は時に間違いを起こし、ミスは大きな事故に繋がります。単調な監視はシステムに任せ、我々開発者は安心して別の事に注力するのが今のあり方なのでしょうね。そしてその安心は、優秀な Mackerel 開発チームの「Mackerel 愛」があってこそ、実現されているのだろうな、と分かる1冊でした。