cloudpack の ヤマグチです。

はい。

sensu-chef cookbookというものがございまして、名前のとおりChefを使ってSensuによる監視システムを構築しようという向きには大変便利なわけでございます。

このcookbookではREADME.mdにもあるように以下のようなLWRPを提供します。

sensu_handler "mailer-ses" do
type "pipe"
command "mailer-ses.rb"
severities ["ok", "warning", "critical"]
additional(
mail_from: "alert@example.com",
mail_to: "alert@example.com",
)
end

AWS SESでメール通知するハンドラの設定はこんな感じです。人間が手でJSONを書くという苦行に手を染めず、Ruby DSLで書けて大変にハッピーなわけです。

このDSLを含むrecipeをcookすると以下のようなJSONが/etc/sensu/conf.d/handlers/mailer-ses.jsonに置かれます。

{
"handlers": {
"mailer-ses": {
"type": "pipe",
"command": "mailer-ses.rb",
"severities": [
"ok",
"warning",
"critical"
],
"mail_from": "alert@example.com",
"mail_to": "alert@example.com"
}
}
}

ここでmailer-ses.rbのソースを見てみましょう。

settings['mailer-ses']['mail_to']

ここ。これ、上のLWRPで生成されたJSONではNoMethodErrorになっちゃいます。

こう書き換えましょう。

settings['handlers']['mailer-ses']['mail_to']

地味なハマりポイントでした。

こちらの記事はなかの人(ヤマグチ)監修のもと掲載しています。
元記事は、こちら