orenoblog

エンジニアになりたいExcel方眼紙erの物語

Sensu 0.12にPagerDuty handlerを導入するまでの道のり

こんばんは俺です。最近SensuにPagerDuty handlerを導入して、PJに投下中です。

PagerDuty handlerは下記URLに記載されているとおりに導入できます。

Sensu Integration Guide - PagerDuty

ただ今回PagerDuty handlerを導入したsensu serverは0.12を使っており、

これが古すぎたためハマったので、手順を残しておきます。

ハマリポイントを産業以内で

1.sensu-pluginのバージョンを1.0以上にしてPagerDuty handlerを導入する

以上終わり。

詳細

sensu-pluginのバージョンアップ

  • PagerDuty handlerはsensu-pluginが1.0以上でなければ動きませんのでsensu-plugin1.0以上をインストールします
$ /opt/sensu/embedded/bin/gem list sensu-plugin

*** LOCAL GEMS ***

sensu-plugin (0.2.2)
$ /opt/sensu/embedded/bin/gem install sensu-plugin
$ /opt/sensu/embedded/bin/gem list sensu-plugin

*** LOCAL GEMS ***

sensu-plugin (1.1.0, 0.2.2)

handler定義作成

  • /etc/sensu/conf.d/handlersに任意の名称でPagerDutyをkickする定義を記述します。

OKもPagerDutyで制御するときは severities に含めましょう。

{
  "pagerduty": {
    "api_key": "**************************"
  },
  "handlers": {
    "hogehoge_pagerduty": {
      "type": "pipe",
      "command": "pagerduty.rb",
      "severities": [
        "warning",
        "critical",
        "unknown"
      ]
    }
  }
}

sensu-server/apiの再起動

再起動してハンドラを有効にします。

$ sudo service sensu-server restart
$ sudo service sensu-api restart

以上でsensu serverの設定は完了です。

client設定例(Chef LWRP)

Chef LWRPでSensuの監視定義を管理しているのであれば、以下の通り

sensu serverで設定したハンドラ名をattributeなりrecipesの handlers に記述します

  • attributes/default.rb
default.sensu.default_handlers  = ["mail", "hogehoge_pagerduty"] 
  • recipes/default.rb
sensu_check "check_resource_cpu" do
  command %{check-cpu.rb -w 80 -c 90}
  standalone true
  handlers node.sensu.default_handlers
  interval node.sensu.check_interval
  additional occurrences: node.sensu.check_occurrences
end 

以上です。