Mackerel で mkr を使用した CLI 操作の続きです。

20160523041549

create

ホストを作成します。 オプション指定無しだと working で作成されます。

$ mkr create TEST
   created XXXXXXXXtLu

20160523041550

  • ステータスをメンテナンスとし、ロールを指定した場合
$ mkr create -st maintenance -R testservice:testrole TEST
   created XXXXXXXXPcN
   updated XXXXXXXXPcN maintenance

20160523041551

update

ホスト情報を更新します。

$ mkr update --displayName 表示名更新 XXXXXXXXtLu
   updated XXXXXXXXtLu

20160523041552

  • ステータスをスタンバイ、ロールを更新した場合

ロールは追加されるようです。

$ mkr update --st standby --roleFullname testservice:web -n test2 XXXXXXXXPcN
   updated XXXXXXXXPcN

20160523041553

fetch

メトリックの最新値を取得します。 name で指定する値は上記ヘルプページに記載があります。

  • loadavg5
$ mkr fetch -n loadavg5 `mkr hosts -n TEST | jq -r '.[].id'`
{
    "XXXXXXXkAJd": {
        "loadavg5": {
            "time": 1463941200,
            "value": 0.45499999999999996
        }
    }
}
  • cpu.system.percentage
$ mkr fetch -n cpu.system.percentage `mkr hosts -n TEST | jq -r '.[].id'`
{
    "XXXXXXXkAJd": {
        "cpu.system.percentage": {
            "time": 1463941200,
            "value": 0.6792990723058558
        }
    }
}

複数ホスト

hostId をスペース区切りで指定することで複数ホストのメトリック値の収集が可能です。

% mkr fetch -n loadavg5 `mkr hosts -n TEST2 | jq -r '.[].id'` `mkr hosts -n TEST | jq -r '.[].id'`
{
    "XXXXXXXkcAq": {
        "loadavg5": {
            "time": 1463941500,
            "value": 0.21799999999999997
        }
    },
    "XXXXXXXkAJd": {
        "loadavg5": {
            "time": 1463941500,
            "value": 0.144
        }
    }
}

throw

mackerel-agentが存在しない環境からでもメトリックデータの送信が行えます。

書式

以下の様な書式で値を登録します。 数値以外の値は投稿できません。

cat <
   

ホスト(カスタムメトリック)

$ cat <

20160523041554

サービスメトリック

$ cat <

20160523041555

存在しないサービス名指定ではエラーとなります。

% cat < ResponseTime `curl -L -S -s 'https://example.com/' -o /dev/null -w "%{time_total}" | sed -e 's/%//'` `date +'%s'`
pipe heredoc> EOF
     error API result failed: 404 Not Found

mkr コマンドを一通り試しましたが、一括で操作が行える点が便利だと感じました。 特にAPI + α の仕様となっている monitors と、 一括退役が行える retire は利用頻度が高いのではと思います。

元記事はこちら

Mackerel事始め mkr(3)