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を使って、通知の設定と監視項目を追加
を行っていく予定。