vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

Mackerel事始め mkr (1)

Mackerel の CLI 操作を試します。

f:id:htnosm:20160523005746p:plain

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画面で確認

  • 反映前

f:id:htnosm:20160523005747p:plain

  • 反映(push)後

f:id:htnosm:20160523005748p:plain

Web画面でも変更が確認できました。

alerts

アラート操作としては一覧表示とクローズのみです。 ちなみにこちらもヘルプ表示の際に GLOBAL OPTION は使えないようです。

list

  • アラート一覧出力

アラートが存在しない場合は当然ですが何も返って来ません。

$ mkr alerts list
$

アラートが存在する場合は以下のようになります。レベルに色が付いていて良い感じです。

  • アラートが存在

f:id:htnosm:20160523005749p:plain

  • コマンド出力結果

f:id:htnosm:20160523005750p:plain

close

  • アラートのクローズ(アラートID指定)

list で取得した Id を指定してクローズします。

  • コマンド出力結果

f:id:htnosm:20160523005751p:plain

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

f:id:htnosm:20160523005752p:plain


きっと次回に続きます