どうもご無沙汰してます自称 sensu 芸人のかっぱです。
はじめに
Mutators とは?
ざっくり言うと...
- 監視イベントをハンドラに渡す前にイベントデータに手を加える処理
- イベントデータに手を加える必要がなければ特に設定は不要
試す
ドキュメントの Handlers と Mutators を参考に試してみるよです。
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)