Sensu を使ってサービスを監視する

chefを使ってSensuをインストールしたかったが、ネットの情報だと インストール時のみにchefを使って、後は手動で設定していたり、 公式のcookbookのプログラムを直接編集していたりしていたが、 個人的にはそういった事はせずに、Sensuを管理していきたいと思った。

そこで、インスト−ル後の監視項目追加などもchefを使って管理し、 直接、公式のcookbookを編集しない方針でSensuのサービスを構築する事を 目的とし、ある程度構築できたので、メモとして残す事にした。

Sensuについての説明はいろんなサイトで紹介されているので、今回は割愛。

Sensuをインストールするためのcookboookを作成

まず、Sensuをインストールするためのcookbookを作成する。

$ mkdir chef-sensu-sample
$ cd chef-sensu-sample
$ bundle init

作成したGemfileには、以下を追記する。

gem 'knife-solo'
gem 'berkshelf'

記述したら、bundle install --path vendor/budle を実行し、インストールする。

次に、プロジェクトを作成する。

bundle exec knife init .

作成したら、公式のSensu のcookbookを使用するため、Berkfile に以下を追記する。

cookbook 'sensu'

以下のコマンドを実行し、cookbookをダウンロードしたら、こちらのサイトを参考にし、 ssl.jsonをdata_bags設定する。

$ bundle exec berks vendor cookbooks

次に、下記のコマンドを実行し、site-cookbook 以下に 独自の設定を記述するためのsensuのcookbookを作成する。

$ bundle exec knife cookbook create sensu -o site-cookbooks

sensu サーバーの設定

site-cookbooks/sensu/recipes 以下に server.rbを作成し、以下のように記述する

include_recipe "#{@cookbook_name}::default"
include_recipe "#{@cookbook_name}::rabbitmq"
include_recipe "#{@cookbook_name}::redis"
include_recipe "#{@cookbook_name}::server_service"
include_recipe "#{@cookbook_name}::api_service"
#include_recipe "#{@cookbook_name}::dashboard_service" 今回はインストールしない

dashbord_serverのレシピを実行するとWebUIで状況が見られるようになるが、 より高機能な sensu-admin を後でインストールするため、現時点ではインストールしない。

ここで、runlist に以下の設定を書いて実行することにより、サーバーの設定が完了する。

{
  "run_list":[
    "recipe[sensu::server]"
  ]
}

で、knifeを使って実行すれば、Sensuサーバーの基本的な設定は完了。

Sensu クライアント

サーバーと同様に recipes 以下に client.rb を作成し、

 include_recipe "#{@cookbook_name}::default"

sensu_client node.name do
  address node.ipaddress
  subscriptions node['sensu']['client']['subscriptions'] + ['all']
end

include_recipe "#{@cookbook_name}::client_service"

と記述する。

subscriptionsには、監視クライアントの種類を記述する。

クライアントのrunrlist には

{
  "sensu": {
    "client": {
      "subscriptions": []
    }
  },
  "run_list":[
    "recipe[sensu::client]"
  ]
}

を記述する。


今回はここまで。

次回以降、 - sensu-adminのインストール - chefを使って、通知の設定と監視項目を追加

を行っていく予定。