share facebook facebook twitter menu hatena pocket slack

Mackerel事始め mkr (1)

WRITTEN BY 大住 孝之

Mackerel の CLI 操作を試します。

20160523005746

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画面で確認
  • 反映前

20160523005747

  • 反映(push)後

20160523005748

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

alerts

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

list

  • アラート一覧出力

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

$ mkr alerts list
$

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

  • アラートが存在

20160523005749

  • コマンド出力結果

20160523005750

close

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

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

  • コマンド出力結果

20160523005751

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

20160523005752

きっと次回に続きます

元記事はこちら

Mackerel事始め mkr (1)

大住 孝之

構築運用担当。 個性的な面々の中で無個性という個性を打ち出していこうと画策中。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。