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=''")
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 を指定してクローズします。
- コマンド出力結果
- アラートがクローズされる
きっと次回に続きます