ゴールデンウィークに突入したタイミングで色々忘れてしまいそうなので、ここにSensu Serverの作り方をメモっておく。
ちなみに、Sensuは最近ナウなヤングにバカうけのモニタリングツール。インストールした環境は、CentOS 6.5 (Linux version 2.6.32-431.11.2.el6.x86_64)。
ちなみに、Sensu関連のインストールについてはChefやPuppetの使用が、推奨されてるっぽいので、今回は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)
- 作者: 吉羽龍太郎,安藤祐介,伊藤直也,菅井祐太朗,並河祐貴
- 出版社/メーカー: 技術評論社
- 発売日: 2014/05/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (19件) を見る