ちくわ

ちくわにきゅうりを入れるとうまい

mackerel の mkr コマンド便利

会社で、CTO より mackerel コップを心優しく譲って頂いたので、mackerel 布教活動をします。 実際すごい便利なので世の中もっと広まって監視に消耗するケースが減ればいいと願います。

今回は mkr コマンドを紹介します。 本家の help はこちら

CLIツール mkr を使う - Mackerel ヘルプ

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 を生成するなんていうことも出来ます。

buty4649.hatenablog.com

今回の例では、管理しているサーバ全てに mackerel が install されていると効果最大になります。 puppet, Chef 等のサーバ構成管理ツールを利用して常に mackerel が install される世界を作れば、別途サーバリストを管理する手間も無くなるかと思います。

夢が広がりますね。