Mackerel事始め mkr (1)
Mackerel の CLI 操作を試します。

WebAPIが用意されていますが、APIを簡略化したコマンド mkr があるのでそちらを利用してみます。
機能
利用頻度の高い操作が揃っているようです。mkrに無い機能の CLI 利用は直接APIを使用することになります。
| Command | 機能 | 用途 |
|---|---|---|
| monitors | 監視 | 監視ルールの取得・更新・差分表示 |
| alerts | アラート | 一覧取得・クローズ |
| hosts | ホスト | 一覧取得 |
| status | ホスト | 詳細情報取得 |
| create | ホスト | 新規作成 |
| update | ホスト | 情報更新 |
| retire | ホスト | ホストを退役 |
| fetch | メトリック | 最新値の取得 |
| throw | メトリック | 値の投稿 |
APIKEY
APIKEYの設定が必要になるので予め取得・設定をしておきます。 設定をしていない場合以下の様なエラーが出力されます。
$ mkr hosts
error
MACKEREL_APIKEY environment variable is not set. (Try "export MACKEREL_APIKEY='<Your apikey>'")
monitors
公式ヘルプにも固有ページがあります。
jsonダウンロード → 編集 → jsonアップロードで設定変更が簡単に行なえます。
サブコマンドも pull、diff、push のみとシンプルです。
設定数が多くなってきた場合、jsonファイルは可読性に難有りになるかもしれません。(split的な物が欲しくなりそうです)
ちなみにヘルプ表示の際に GLOBAL OPTION は使えないようです。
# 不可
#mkr monitors {-h|--help}
# ヘルプ表示
mkr monitors {h|help}
pull
- Mackerel から monitor 設定をダウンロード
直下に monitors.json が生成されます。
$ mkr monitors pull
$ ls -l
total 8
-rw-r--r-- 1 testuser testgroup 1394 5 10 13:27 monitors.json
$ cat monitors.json
{
"monitors": [
{
"id": "XXXXXXXXkdu",
"type": "connectivity"
},
{
"id": "XXXXXXXXQTj",
"name": "loadavg5",
"type": "host",
"metric": "loadavg5",
"operator": ">",
"warning": 5,
"critical": 10,
"duration": 10
},
{
"id": "XXXXXXXXZfY",
"name": "CPU %",
"type": "host",
・・・略
diff
- Mackerel と monitors.json の差分表示
# Mackerel との差分が無い場合
$ mkr monitors diff
Summary: 0 modify, 0 append, 0 remove
# monitors.json を編集
$ vi monitors.json
# Mackerel との差分が有る場合
$ mkr monitors diff
Summary: 1 modify, 0 append, 0 remove
{
"name": "Filesystem %",
"type": "host",
"metric": "disk%",
"operator": ">",
- "warning": 50.000000,
+ "warning": 60.000000,
"critical": 80.000000,
"duration": 1,
},
push
- Mackerel への反映
$ mkr monitors push
info Update a rule.
{
"id": "XXXXXXXXopA",
"name": "Filesystem %",
"type": "host",
"metric": "disk%",
"operator": ">",
"warning": 60,
"critical": 80,
"duration": 1
},
$ mkr monitors diff
Summary: 0 modify, 0 append, 0 remove
Web画面で確認
- 反映前

- 反映(push)後

Web画面でも変更が確認できました。
alerts
アラート操作としては一覧表示とクローズのみです。 ちなみにこちらもヘルプ表示の際に GLOBAL OPTION は使えないようです。
list
- アラート一覧出力
アラートが存在しない場合は当然ですが何も返って来ません。
$ mkr alerts list $
アラートが存在する場合は以下のようになります。レベルに色が付いていて良い感じです。
- アラートが存在

- コマンド出力結果

close
- アラートのクローズ(アラートID指定)
list で取得した Id を指定してクローズします。
- コマンド出力結果

- アラートがクローズされる

きっと次回に続きます