Sensu Serverをインストールする手順メモ

by Javier García



ゴールデンウィークに突入したタイミングで色々忘れてしまいそうなので、ここにSensu Serverの作り方をメモっておく。
ちなみに、Sensuは最近ナウなヤングにバカうけのモニタリングツール。インストールした環境は、CentOS 6.5 (Linux version 2.6.32-431.11.2.el6.x86_64)。


ちなみに、Sensu関連のインストールについてはChefPuppetの使用が、推奨されてるっぽいので、今回はChefのCookbookをありがたく利用させていただいた。(このエントリではchef-soloを使って環境構築している。)
SensuのChef Cookbookは以下のGitHubリポジトリで公開されている。

sensu-chefの取得

# yum install -y git gcc

まず、最低限必要なパッケージをyumでインストールして、、、

# curl -L https://www.opscode.com/chef/install.sh | bash

Chef(Client)をインストール。

# mkdir -p /var/chef/{cookbooks,data_bags,nodes}

Cookbookとかの置き場を掘っておく。

# mkdir ~/workspace
# cd ~/workspace

リポジトリをcloneする適当なワークスペースを作って、、、

# git clone https://github.com/sensu/sensu-chef.git

GitHubからsensu-chefのリポジトリをcloneする。

必要なgemパッケージのインストール

# PATH=/opt/chef/bin:/opt/chef/embedded/bin:${PATH}

Chefでインストールされた実行ファイル群にパスを通しておく。
(Ruby関連のソフトウェアはChefにembeddedされているものを使った。この辺はお好みで。)

# cd sensu-chef/
# bundle install

sensu-chefでGemfileを準備してくれているので、ありがたく関連gemパッケージをbundleでインストールする。

鍵の準備

# cd examples/ssl/

# ./ssl_certs.sh generate
Generating a Sensu SSL data bag item ...
Generating a 2048 bit RSA private key

・・・・・省略・・・・・

Write out database with 1 new entries
Data Base Updated
Data bag item created: ssl.json

SSL鍵を作って、、、

# mkdir -p /var/chef/data_bags/sensu
# cp ssl.json /var/chef/data_bags/sensu/

data_bags用のディレクトリにコピー。

# ./ssl_certs.sh clean
Cleaning up ...

generateしたファイルは一応消しておく。

必要な依存Cookbookの取得

# cd ../..
# librarian-chef install --path=/var/chef/cookbooks

sensu-chefでCheffileが準備されているので、librarian-chefを実行して、関連しているCookbookを集めておく。ここではPathを指定して、必要なCookbookは"/var/chef/cookbooks"に集約している。

chef-soloの実行

# mkdir -p /etc/chef /tmp/chef-solo

chef-soloの実行に必要となるディレクトリを作って、、、

cat <<'EOF' >/etc/chef/solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path "/var/chef/cookbooks"
data_bag_path "/var/chef/data_bags"
EOF
cat <<'EOF' >/var/chef/nodes/sensu-server.json
{
  "run_list": [
    "sensu::default",
    "sensu::redis",
    "sensu::rabbitmq",
    "sensu::server_service",
    "sensu::api_service",
    "sensu::dashboard_service"
  ]
}
EOF

↑のような感じで、chef-soloの実行に必要な設定ファイル2つを生成。

# chef-solo -j /var/chef/nodes/sensu-server.json

で、あとはchef-soloを実行されれば、自動でSensu Serverと、関連するミドルウェア群がインストール&設定されて、動き出す。


この時点で、上記の"sensu-server.json"でrun_listに指定したRecipeのソフトウェアが動いているはず。
ということで、試しにダッシュボードにアクセスしてみる。

http://(Sensu ServerのIPアドレス):8080

上記のURLで、アクセスできるはずです。
ちなみにBasic認証がかかっている。デフォルトだと(admin/secret)でログインできる。


ちなみに、このダッシュボードのパスワードや、その他rabbitmqとかのユーザ/パスワード情報は、Chefリポジトリの"attributes/default.rb"で定義されているので、ここをみて確認したり、変えたかったらここを設定すればOK。(https://github.com/sensu/sensu-chef/blob/master/attributes/default.rb)

erlangのインストールでエラーが出たとき

今日試したときは特にエラーが出なかったので、修正されたと思うんですが、前に触ってたときは、chef-soloでインストールしている途中で、erlangがうまく入らなかったことがあった。
そのときは、以下のような感じで、リポジトリに存在している正しいバージョンを指定してやれば問題なく動いた。

# diff -c /var/chef/cookbooks/erlang/recipes/package.rb{.bak,}
*** /var/chef/cookbooks/erlang/recipes/package.rb.bak   2014-04-02 17:00:10.347278714 +0900
--- /var/chef/cookbooks/erlang/recipes/package.rb       2014-04-02 17:06:53.963274363 +0900
***************
*** 43,47 ****
      include_recipe 'yum-erlang_solutions'
    end

!   package 'erlang'
  end
--- 43,51 ----
      include_recipe 'yum-erlang_solutions'
    end

!   execute "yum install -y erlang-R16B03" do
!     user "root"
!     command "yum install -y erlang-R16B03"
!     not_if { File.exists? "/usr/bin/erl" }
!   end
  end


・・・ちなみに、このSensu Serverだけだと、当然、何もモニタリングできていないので、監視やクライアントの設定については別のエントリに記載することにします。
それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)