会社で、CTO より mackerel コップを心優しく譲って頂いたので、mackerel 布教活動をします。 実際すごい便利なので世の中もっと広まって監視に消耗するケースが減ればいいと願います。
今回は mkr コマンドを紹介します。 本家の help はこちら
Install から、基本的な使い方まで、全部書かれています。
利用事例
mkr を使って登録されているサーバの service や role の情報を yaml で取得できるので、
% mkr hosts --service My-Service --role www [ { "id": "xxxxxxxxxxx", "name": "www1.My-Service.jp", "status": "standby", "roleFullnames": [ "My-Service:www" ], "isRetired": false, "createdAt": "Mar 1, 2016 at 0:00pm (JST)", "ipAddresses": { "eth0": "xxx.xxx.xxx.xxx", "eth1": "xxx.xxx.xxx.xxx" } }, { "id": "xxxxxxxxxxx", "name": "www2.My-Service.jp", "status": "working", "roleFullnames": [ "My-Service:www" ], "isRetired": false, "createdAt": "Mar 1, 2016 at 0:00pm (JST)", "ipAddresses": { "ipAddresses": { "eth0": "xxx.xxx.xxx.xxx", "eth1": "xxx.xxx.xxx.xxx" } }, -- -- snip -- --
これを jq やシェルで整形し、意図する形で host 一覧を取得することが可能になります。
% mkr hosts --service My-Service --role www | jq -r '.[] | .name' www1.My-Service.jp www2.My-Service.jp
ということは、fabric や pssh 等のコマンドと連携することで、mackerel で監視しているサーバに対してオペレーションをシュッと出来ます。 しかも role 指定まで出来る!
% fab -H $( mkr hosts --service My-Service --role www | jq -r '.[] | .name' | sort | perl -pe 's/\n/,/g' | sed -e 's/,$//' ) check_something
% pssh -h <( mkr hosts --service My-Service --role www | jq -r '.[] | .name' | sort | sed -e 's/,$//' ) -i " hostname "
hosts を生成するなんていうことも出来ます。
今回の例では、管理しているサーバ全てに mackerel が install されていると効果最大になります。 puppet, Chef 等のサーバ構成管理ツールを利用して常に mackerel が install される世界を作れば、別途サーバリストを管理する手間も無くなるかと思います。
夢が広がりますね。