どうもご無沙汰してます自称 sensu 芸人のかっぱです。
はじめに
Mutators とは?
ざっくり言うと...
- 監視イベントをハンドラに渡す前にイベントデータに手を加える処理
- イベントデータに手を加える必要がなければ特に設定は不要
試す
ドキュメントの Handlers と Mutators を参考に試してみるよです。
Handlers
こちら に従って /etc/sensu/handlers
以下にスクリプトを設置する。
#!/usr/bin/env ruby
require 'rubygems'
require 'json'
event = JSON.parse(STDIN.read, :symbolize_names => true)
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'
event = JSON.parse(STDIN.read, :symbolize_names => true)
event.merge!(:mutated => true, :its_a_tumor => true)
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)