ようへいの日々精進XP

よかろうもん

sensu の Mutators をドキュメント通りに試した

どうもご無沙汰してます自称 sensu 芸人のかっぱです。

はじめに

  • sensuMutators を試せていなかったのでまずはドキュメントを見よう見真似で試す

Mutators とは?

ざっくり言うと...

  • 監視イベントをハンドラに渡す前にイベントデータに手を加える処理
  • イベントデータに手を加える必要がなければ特に設定は不要

試す

ドキュメントの HandlersMutators を参考に試してみるよです。

Handlers

こちら に従って /etc/sensu/handlers 以下にスクリプトを設置する。

#!/usr/bin/env ruby

require 'rubygems'
require 'json'

# Read event data
event = JSON.parse(STDIN.read, :symbolize_names => true)
# Write the event data to a file
file_name = "/tmp/sensu_#{event[:client][:name]}_#{event[:check][:name]}"
File.open(file_name, 'w') do |file|
  file.write(JSON.pretty_generate(event))
end

上記は監視のイベントデータを /tmp/ 以下に出力するハンドラスクリプト

config.json に以下のように設定する。

  "handlers": {
    "default": {
      "type": "pipe",
      "command": "/etc/sensu/handlers/file.rb"
    }
  }

sensu-server を再起動する /tmp/ 以下に sensu_${hostname}_${監視イベント名} というファイル名で出力される。中身は以下のような感じ。

      "2",
      "2",
      "2",
      "2",
      "2",
      "2"
    ]
  },
  "occurrences": 90,
  "action": "create"
}

Mutators

さあ、Mutato してみましょうということで こちらの通りにスクリプト/etc/sensu/mutators 以下に設置する。

#!/usr/bin/env ruby

require 'rubygems'
require 'json'

# Read event data
event = JSON.parse(STDIN.read, :symbolize_names => true)
# Add a 'tag' to prove it has been mutated
event.merge!(:mutated => true, :its_a_tumor => true)
# Output mutated event data to STDOUT
puts event.to_json

イベントストリームに対して "mutated": true"its_a_tumor": true を付加する。

そして config.json に以下を追加する。

  "handlers": {
    "default": {
      "type": "pipe",
      "mutator": "tag", // 追加
      "command": "/etc/sensu/handlers/file.rb"
    }
  },
 "mutators": { // 追加
    "tag": { // 追加
      "command": "/etc/sensu/mutators/tag.rb" // 追加
    } // 追加
  } // 追加

そして...改めて sensu-server を再起動する /tmp/ 以下に sensu_${hostname}_${監視イベント名} というファイル名で出力されるのは従来通り。但し、ファイルの中身を見てみると...

      "2",
      "2",
      "2",
      "2",
      "2",
      "2"
    ]
  },
  "occurrences": 93,
  "action": "create",
  "mutated": true,
  "its_a_tumor": true
}

おお、"mutated": true,"its_a_tumor": true が付加されている。


さいごに

  • 引き続き Mutators を試していきたい
  • JSON を制すインフラエンジニアはインフラを制す(なんてねw)